Advertencia sobre los efectos secundarios de la sesión de PHP con variables globales como fuente de datos

Estoy tratando de alojar un sitio web PHP que me fue dado. Veo esta advertencia:

Advertencia: Desconocido: el script posiblemente se base en un efecto secundario de sesión que existió hasta PHP 4.2.3. Tenga en cuenta que la extensión de sesión no considera las variables globales como una fuente de datos, a menos que register_globals esté habilitado. Puede desactivar esta funcionalidad y esta advertencia configurando session.bug_compat_42 o session.bug_compat_warn en off, respectivamente. en Desconocido en la línea 0

¿Qué significa esto? ¿Cómo puedo rastrear el origen de este problema dentro del código?

básicamente tienes una variable con el mismo nombre que tu sesión. ex:

$_SESSION['var1'] = null; $var1 = 'something'; 

que reproducirá este error. puede evitar que PHP intente encontrar variables existentes y advertirle sobre ellas al agregar estas líneas a su secuencia de comandos:

 ini_set('session.bug_compat_warn', 0); ini_set('session.bug_compat_42', 0); 

estos valores se pueden establecer en php.ini o .htaccess también

Parece que hay algunas posibilidades problemáticas aquí:

http://www.spiration.co.uk/post/1231/Your-script-possibly-relies-on-a-session-side-effect

dice que casos como este:

 $_SESSION['firstname']=$_REQUEST['firstname']; 

activará la advertencia.

Además, interpreto este contenido de error php: http://bugs.php.net/bug.php?id=41540 para indicar que este error también puede ocurrir cuando se asigna una variable a la sesión superglobal que aún no se ha inicializado, por ejemplo

 //Start of script $_SESSION['bob'] = $bob; 

Esta es una buena información para descubrir qué está causando la advertencia, pero recomendaría NO cerrar las advertencias que Owen menciona. Estas funciones de tiempo de ejecución se eliminan en PHP 5.4.0 y el desarrollador debe adoptar la práctica de evitar dicho uso de variables.

Para solucionar esto, puede ser una molestia para los desarrolladores, pero si tiene

 $_SESSION["user"] $user; 

renombrar la sesión a

 $_SESSION["sessuser"]; 

O viceversa siempre que el nombre de la sesión y el nombre de la variable sean diferentes. Piénselo de esta manera: cuando actualice a la última comstackción, tendrá que depurar su código de todos modos.

Cuando realiza cambios en .htaccess ini_set no funciona. Tendrás que hacerlo como:

 php_flag session.bug_compat_42 0 php_flag session.bug_compat_warn 0 

en mi caso, php.ini cambia de encendido a apagado

Me gusta esto :

 session.bug_compat_42 = off session.bug_compat_warn = off 

si no funciona, reinicie apache