Я сварил проблему и сделал ее чистым, так что, надеюсь, вам будет легче помочь мне.
У меня очень простой код:
<?php echo "Hello world"; ?>
Это отлично работает.
Если я запустил следующий код (ошибка синтаксического анализа), я не получаю никаких ошибок, но текст «Hello world» все еще отображается:
<?php echo "Hello world"; piwejfoiwjefoijwef ?>
Если я помещаю ошибку синтаксического анализа, прежде чем код, который он делает, однако, не отобразит «Hello world»:
<?php piwejfoiwjefoijwef echo "Hello world"; ?>
Когда я печатаю phpinfo (в том же файле, в том же каталоге), у меня есть следующие настройки: display_errors On display_startup_errors On error_reporting 1
Если я попытаюсь также настроить отчет об ошибках внутри сценария и запустить его со следующим кодом, я все равно не получаю никаких ошибок или предупреждений, но отображается текст «Hello world»:
<?php error_reporting(E_ERROR | E_WARNING | E_PARSE); ini_set('display_errors', '1'); echo "Hello world"; owieufpowiejf ?>
Мой файл php.ini имеет следующие значения (и я перезапустил Apache):
error_reporting = E_ERROR & ~E_DEPRECATED display_errors = On display_startup_errors = On
Я запускаю Apache / PHP / MySQL на AMI Amazon с 64-разрядным AWS EC2. Я не настолько разбираюсь в настройках сервера. Ошибки начались, когда я перешел на сервер Amazon. Кроме того, сообщение об ошибках сервера и Apache / PHP работает безупречно.
Пожалуйста, помогите мне в том, что я могу сделать, чтобы исправить эту проблему.
Благодаря!
Это уведомление.
error_reporting(E_ALL);
показывает это.
<?php error_reporting(E_ALL); ini_set('display_errors', '1'); echo "Hello world"; owieufpowiejf ?>
Привет мир
Примечание: использование неопределенной константы owieufpowiejf – предполагается «owieufpowiejf» в / code / 14B4LY в строке 5
Это потому, что это не ошибка синтаксического анализа, она думает об этом как константа и пытается разобрать ее как строку. И размещение нормальной строки является допустимым утверждением.
Вы можете попробовать error_reporting(-1)
-1 – максимальное значение error_reporting
может принимать и всегда будет.
У меня была эта проблема и исправлена ее, отредактировав /etc/php.ini на display_errors = On
В своем PHP-скрипте попробуйте установить error_reporting на E_ALL и посмотреть, получаете ли вы уведомление.
error_reporting(E_ALL)
Проверьте документацию: http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
Создайте файл .htaccess в своем основном каталоге и поместите:
php_flag display_errors on php_value error_reporting 7
Конечно, на вашем сервере должен быть включен mod_rewrite.
Вызов error_reporting()
в том же скрипте, который содержит синтаксическую ошибку, никогда не будет работать.
<?php echo "Hello world"; piwejfoiwjefoijwef ?>
Этот сценарий, в частности, не вызывает вас синтаксической ошибки, поскольку он не содержит синтаксической ошибки. Это всего лишь выражение echo
и голая константа во второй строке. Конечная точка с запятой может быть опущена непосредственно перед ?>
Вы получили бы уведомление, если бы оно не было отключено. Опять же, вы не E_NOTICE
в свой другой тест.