Есть ли способ, которым я заставляю PHP сообщать об ошибке, если я использую неинициализированную / неопределенную переменную? - PullRequest
1 голос
/ 30 августа 2010

Я допустил огромную ошибку, смешав результат с результатами, и мне понадобилось около 4 часов, чтобы, наконец, найти ошибку.

Итак, вот вопрос, в PHP, возможно ли, что я могу заставить PHPсообщать об ошибках, если я использую неопределенную / неинициализированную переменную.

спасибо

Ответы [ 5 ]

3 голосов
/ 30 августа 2010

Установите для сообщения об ошибках значение E_ALL и убедитесь, что display_errors in php.ini включено.

php.ini

display_errors = On

PHP-код

// If you cannot access the php.ini file
// you can do this within your PHP code instead
@ini_set('display_errors' '1');
error_reporting(E_ALL);

Установки по умолчанию, которые у вас есть сейчас, вероятно, исключают уведомления, тип ошибок, которые PHP вызывает для неинициализированных переменных, которые могут выглядеть примерно так:

error_reporting(E_ALL & ~E_NOTICE);
2 голосов
/ 30 августа 2010

В среде разработки я предпочитаю использовать error_reporting(-1).Который сообщает все PHP ошибок.

1 голос
/ 30 августа 2010

это уже сообщает об ошибке. как то так:

"Notice:  Undefined variable: a in C:\wamp\www\testcenter\index.PHP on line 40"

может быть, вы не достаточно конкретны. но вы должны попробовать error_reporting(-1);, как будто принуждает php показывать некоторые рекомендации. кусок из руководства по php об ошибках E_STRICT:

Включите, чтобы PHP предлагал изменения в вашем коде, которые обеспечат наилучшую совместимость и прямую совместимость вашего кода.

просто помните, что error_reporting(-1); показывает больше ошибок, чем error_reporting(E_ALL);, потому что E_STRICT ошибки не включены в ограничение E_ALL.

1 голос
/ 30 августа 2010

Установить отчет об ошибках, чтобы сообщить обо всех ошибках.Либо в php.ini, либо во время выполнения, используя error_reporting(E_ALL)

1 голос
/ 30 августа 2010

да, используйте error_reporting() и установите его на E_ALL, например:

 error_reporting(E_ALL);
...