Как я могу избежать ошибок сеанса PHP? - PullRequest
1 голос
/ 07 августа 2009

Иногда я сталкиваюсь с этой ошибкой в ​​PHP, как я могу это исправить или с чем это связано?

Предупреждение: неизвестно: возможно, ваш сценарий основан на побочном эффекте сеанса, существовавшем до PHP 4.2.3. Обращаем ваше внимание, что расширение сеанса не рассматривает глобальные переменные как источник данных, если не включен параметр register_globals. Вы можете отключить эту функцию и это предупреждение, отключив session.bug_compat_42 или session.bug_compat_warn соответственно. в Неизвестно в строке 0

Ответы [ 5 ]

6 голосов
/ 07 августа 2009

Если имена ваших переменных совпадают с параметрами сеанса, тогда эта версия PHP будет неправильно распознавать это, поскольку программист неправильно полагается на register_globals для переменных сеанса. Переименуйте свои переменные, и предупреждение должно исчезнуть.

$mySessionVar = $_session["sessionVar"]; 

а не

$sessionVar = $_session["sessionVar"]; 
2 голосов
/ 07 августа 2009

Вы полагаетесь на устаревшую функцию PHP, которая называется register_globals . Эта функция вызвала много проблем безопасности, и больше не должна использоваться. Руководство по PHP обсуждает это подробно .

Отличное описание проблемы см. В этом сообщении Группы Google .

Редактировать : Если вы не не полагаетесь на register_globals, то вам следует обратить внимание на ответы Гамбо и стереоинтерактива.

1 голос
/ 07 августа 2009

Просто отключите session.bug_compat_42 и session.bug_compat_warn, как следует из сообщения об ошибке.

0 голосов
/ 07 августа 2009

Я бы НЕ предлагал вам отключить предупреждения или сообщения об ошибках, это проблема, которую вы, вероятно, хотите исправить. Либо у вас есть имена переменных, которые вызывают ложное сообщение об ошибке (см. Ответ sterrointerative.com), либо вы пытаетесь использовать глобальные переменные, не определяя их (что означает, что у вас, вероятно, есть ошибки, которых вы не видите). На мой взгляд, это важное различие, которое вы хотите разобрать.

Если это происходит только на некоторых страницах, вам, вероятно, придется пересмотреть весь код, вставленный на эти страницы, и искать использование переменных, которые, по-видимому, не определены, до их использования. Проход по этим страницам с помощью отладчика должен помочь.

0 голосов
/ 07 августа 2009

error_reporting (0) отключает все сообщения об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...