Para No programadores: Resolviendo en problema con REGISTER_GLOBALS en Joomla

En ocasiones se presenta este problema: Following PHP Server Settings are not optimal for Security and it is recommended to change them: PHP register_globals setting is `ON` instead of `OFF` Please check the Official Joomla! Server Security post for more information. ) al instalar el Joomla e intentar usarlo. Debido a que es un problema en programacion y que requiere ciertos conocimientos de programacion solucionarlo, muchos usuarios sin estos conocimientos no saben resolverlo. Sin embargo, pensando en ellos hemos creado este tutorial.
Para saber más...
Como puedo poner muchas carpetas en REGISTER_GLOBALS=ON o REGISTER_GLOBALS=OFF en forma simultanea?
IMPORTANTE: Esta explicacion es solo para personas sin conocimientos de programacion. Si los tenes, haz click aqui para ir al tutorial para programadores.
Bien, antes de abordar concretamente qué causa el problema, es necesario que comprendas más sobre algunas de las cosas involucradas en el mismo.
Por ello te explicaremos qué son las variables en programacion. Como su nombre lo indica, una variable es algo que varia. Pero para que podas entender como se usa en programacion, imaginate que un dia te levantas y decidis anotar las diferentes temperaturas que hacen a lo largo del dia.
Entonces tomas un papel y, por ejemplo a la mañana, anotas:
Temperatura=10º
Luego por el mediodia..
Temperatura=25º
A la tarde...
Temperatura=17º
Bien, como ves siempre haz escrito la palabra Temperatura, luego el signo igual y finalmente el valor de la temperatura. De la misma forma se hace en programacion. Temperatura se denomina "una variable" y funciona como una especie de almacen que acumula el valor de la temperatura a medida que este cambia.
¿Y si no cambiase? Almacenaría el último valor conocido de temperatura.
Bien, ¿Y que tiene esto que ver con tu problema? Como sabes Joomla es un programa escrito en PHP. PHP es un lenguaje de programacion.
Asi como con los idiomas: el castellano, el ingles, el frances, etc. un lenguaje de programacion tiene reglas para decir las cosas bien y para que la persona ( o, en este caso la computadora) entienda qué le estas diciendo y haga o no haga algo en consecuencia.
PHP tiene una regla respecto al REGISTER_GLOBALS ( si te fijas en el error verás que aparece esa palabra) que, al no cumplirse, es la que causa que aparezca este problema.
Pero, antes de que te demos la solucion al mismo, es necesario que comprendas de qué trata esta regla.
Volviendo al ejemplo de los idiomas, en cada idioma hay ciertas palabras que tienen funciones especificas. En español si estamos hablando de una mujer decimos la mujer. Si estamos hablando de un hombre decimos el hombre. Y la misma regla aplica a todo lo que identifiquemos como femenino o masculino. De esa forma esta bien decir la via pero no el via. O el barco pero no la barco.
Se podria decir que la palabra la es obligatoria si estamos hablando de algo femenino y la palabra el es obligatoria si estamos hablando de algo femenino.
Bien, en PHP sucede algo parecido con la declaracion de las variables globales.
Una variable global, como su nombre lo indica es una variable ( o sea un almacen de valores) que puede usarse en cualquier parte del programa.
Hacer una declaracion de variables significa darle un valor. O sea, decir que Temperatura=10º o Temperatura=25º ( Como te das cuenta, sin saberlo en los ejemplos ya la estuviste declarando)
Ahora bien, la regla del REGISTER_GLOBALS indica que si algo llamado REGISTER_GLOBALS en la configuracion del PHP en el servidor puede estar en ON (o activado) o en OFF (o sea, desactivado). Si esta activado, podes usar variables globales sin declararlas. Sino, no.
Por razones de seguridad, Joomla necesita que REGISTER_GLOBALS este en OFF o sea desactivado.
Si, al ejecutarse el programa del Joomla detecta que esto no es asi, para la ejecucion y solicita que REGISTER_GLOBALS sea puesto en OFF. Eso es lo que dice la linea del error.
Ahora bien ¿Como lo resuelvo? ¿ Es necesario que el personal toque algo en el servidor?
Resolverlo es facil y puede hacerlo usted. No es necesario que nadie lo ayude y lo que tiene que hacer no escapa a su control. Para ello solo necesitará un archivo de texto.
Un archivo de texto similar al que crea con el blog de notas, o como crea cualquier TXT.
Vamos a contarle la opcion dificil para que entienda como funciona este archivo y despues vamos a darle la solucion fácil. Pero anes necesitamos que entienda como funciona el archivo.
Bien, lo primero es ir crear un archivo txt. Para ello puede ir a Mi PC o al escritorio, colocarse en cualquier carpeta de su computadora, presionar con el boton derecho y, en el menu contextual que se despliega ir a Nuevo, Documento de texto.
Cree un documento llamado php, pero, en vez de dejarle la extension .txt coloquele la extension .ini de modo que el nombre quede php.ini
Esto creará un archivo que se conoce como php.ini, el cual básicamente le permite indicarle al php ciertas cosas acerca de su configuracion ( por ejemplo, si REGISTER_GLOBALS debe estar activado o no)
Luego simplemente abralo y coloque la linea:
REGISTER_GLOBALS=OFF
Solo eso, nada mas, y guardelo.
Finalmente, y aqui esta la parte dificil, deberá subirlo via FTP a todas las carpetas de su Joomla via FTP. Esto hará que todas las carpetas al ejecutar los distintos fragmentos de codigo dentro de ellas, tengan REGISTER_GLOBALS en OFF.
Bien pero ¿Es demasiado trabajo subir el php.ini a todas las carpetas ya que son muchas?
Si, son muchas carpetas, por eso es que el trabajo de subir el php.ini a todas es muy engorroso, aburrido y tedioso. Es alli cuando la programacion viene en nuestra ayuda.
Ejecutando un programa, creado en PHP ( no se preocupe, no deberá tener conocimientos de PHP para hacerlo) puede copiar y pegar el archivo php.ini a todas las carpetas de su Joomla, en menos de un segundo y no en horas.
Para poner a funcionar este programa para usted puede descargarlo desde nuestra seccion de descargas haciendo click aqui.
Luego deberá sacar el archivo buscaycopia.php, que esta dentro del zip, abrirlo ( lo cual puede hacer mediante el blog de notas) y buscar el siguiente texto:
$file = 'carpeta_de_mi_sitio_donde_esta_el_php_ini/php.ini';
Y colocar en carpeta_de_mi_sitio_donde_esta_el_php_ini la carpeta donde colocaste el php.ini ( Recuerda que debes subirlo mediante FTP a alguna carpeta de tu sitio antes de usar este programa en PHP.)
Si el php.ini esta en la misma carpeta del Joomla, simplemente coloca $file="php.ini";
Tambien debes buscar esta linea:
$llistat=recrusive_dirlist("carpeta_de_mi_sitio_donde_estan_las
_carpetas_donde_quiero_copiar_el_php_ini");
Y colocar en vez de carpeta_de_mi_sitio_donde_estan_las_carpetas_donde_quiero_copiar_el_php_ini la carpeta donde instalaste el joomla. Por ejemplo, si tu sitio es http://www.tusitio.com e instalaste el joomla en la carpeta joomla, o sea en http://www.tusitio.com/mijoomla , el nombre de la carpeta que debes colocar en vez de carpeta_de_mi_sitio_donde_estan_las_carpetas_donde_quiero_copiar_el_php_ini es mijoomla
Pero, como generalmente este problema se da en el administrador del joomla, lo mejor es copiar el php.ini dentro de su carpeta, la carpeta administrator. Quedaria $llistat=recrusive_dirlist("administrator");
Luego simplemente subis por ftp el archivo PHP a la carpeta donde instalaste el joomla y lo ejecutas. Para ejecutarlo simplemente lo visitas con tu navegador. Para ello, por ejemplo si subiste el archivo php a la carpeta public_html y tu sitio es http://www.tusitio.com visita la página php escribiendo http://www.tusitio.com/buscaycopia.php
Esto lo ejecutará y copiará el php.ini en todas las carpetas del Joomla, lo que hará que el mismo empiece a funcionar.
Otra opcion, si no queres descargarte el PHP, es ir a MI PC o en el escritorio, crear un documento de texto nuevo, pero renombrarlo como buscaycopia.php
Luego copiar el codigo que verás a continuacion, pegarlo alli, guardar el archivo, subirlo por FTP y hacer los mismos pasos que se explico anteriormente ( subir antes el php.ini, ejecutar el archivo php con el navegador.)
Bien, eso es todo. Ya tu problema esta resuelto.
<?
function recrusive_dirlist($base_dir)
{
global $getDirList_alldirs,$getDirList_allfiles;
function getDirList($base)
{
global $getDirList_alldirs,$getDirList_allfiles;
if(is_dir($base))
{
$dh = opendir($base);
while (false!=($dir = readdir($dh)))
{
if ((is_dir($base ."/". $dir)) && ($dir!=".") && ($dir!="..")){
$subs = $dir;
$subbase = $base ."/". $dir;
$getDirList_alldirs[]=$subbase;
getDirList($subbase);
}
else if((is_file($base ."/". $dir)) && ($dir != ".") && ($dir != ".."))
{
$getDirList_allfiles[]=$base ."/". $dir;
}
}
closedir($dh);
}
}
getDirList($base_dir);
$retval['dirs']=$getDirList_alldirs;
$retval['files']=$getDirList_allfiles;
return $retval;
}
$file = 'carpeta_de_mi_sitio_donde_esta_el_php_ini/php.ini';
$llistat=recrusive_dirlist("carpeta_de_mi_sitio_donde_estan_las_
carpetas_donde_quiero_copiar_el_php_ini");
$num_files= count($llistat[dirs]);
echo $num_files;
for ($i=0; $i<$num_files; $i++)
{
$newfile = $llistat[dirs][$i].'/php.ini';
echo $newfile."<br>";
if (!copy($file, $newfile)) {
echo "fallo en copiar $file...\n";
}
echo $llistat[dirs][$i]."<br>";
}
?>
Enlaces relacionados
Tags relacionados

Aikido
Brazilian
Defensa Personal
Tai chi chuan
Valetodo
Ipod Iphone
Telefonos
Administracion
Empleo
Emprendedores
Gurues
Mercadeo
Motivacion
Temas Legales
Sony Vegas
Playstation
Trucos
PHP
Dreamweaver
Excel
Flash
Photoshop
PowerPoint
varios
Dietas
Enfermedades
Area de Usuarios
Bases de Datos
Buscadores
Compras
Correo Electronico
Evitando el Spam
Panel CPanel
Panel Plesk
Revendedores
Sobre mi dominio
Solucion de problemas
Subiendo mi sitio
Utilidades
Videos Rhosting
Terminos del Servicio - Politica de Privacidad - Ayuda a tus amigos, recomiendanos! - Contactanos
Todos los articulos de la seccion de Ayuda son Copyleft. Podes reproducirlos citando la fuente.
Producto Rhosting.com.ar- 1999 al 2008 - Resistencia - Chaco Las Malvinas son Argentinas