Я проверил мой PHP INI-файл ( php.ini
) и display_errors
установлен, а также сообщения об ошибках E_ALL
. Я перезапустил свой веб-сервер Apache.
Я даже поместил эти строки в начало моего скрипта, и он даже не улавливает простых ошибок разбора. Например, я объявляю переменные с помощью a "$"
и не закрываю операторы ";"
. Но все мои скрипты показывают пустую страницу с этими ошибками, но я хочу видеть ошибки в выводе моего браузера.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Что осталось сделать?
$_REQUEST
параметр), эти две строки будут работать большую часть времени.Ответы:
Это всегда работает для меня:
Однако это не заставляет PHP отображать ошибки синтаксического анализа - единственный способ показать эти ошибки - изменить ваш php.ini с помощью этой строки:
(если у вас нет доступа
php.ini
, то вставка этой строки.htaccess
тоже может сработать):источник
php_flag display_errors 1
для .htaccessE_ALL
недостаточно для отображения всех ошибок в PHP 5.3. "E_STRICT
стало частьюE_ALL
в 5.4.0" - PHP Manual Вам нужноE_ALL | E_STRICT
или-1
в той версии.Вы не можете перехватить ошибки синтаксического анализа при включении вывода ошибок во время выполнения, потому что он анализирует файл перед тем, как фактически что-либо выполнить (и, поскольку он обнаруживает ошибку во время этого, он ничего не выполняет). Вам нужно изменить фактическую конфигурацию сервера, чтобы display_errors был включен и использовался уровень approriate error_reporting. Если у вас нет доступа к php.ini, вы можете использовать .htaccess или аналогичный, в зависимости от сервера.
Этот вопрос может предоставить дополнительную информацию.
источник
Внутри вашего php.ini :
Затем перезапустите ваш веб-сервер.
источник
sudo service apache2 restart
sudo apachectl -k restart
.Loaded Configuration File
Для отображения всех ошибок вам необходимо:
1. Имейте эти строки в PHP-скрипте, который вы вызываете из браузера (обычно
index.php
):2. (a) Убедитесь, что в этом скрипте нет синтаксических ошибок
-или-
2. (б) Установите
display_errors = On
в своемphp.ini
В противном случае он не может даже запустить эти 2 строки!
Вы можете проверить наличие синтаксических ошибок в вашем скрипте, запустив (в командной строке):
Если включить скрипт из другого PHP скрипт , то он будет отображать синтаксические ошибки в включены сценарии. Например:
index.php
my_script.php
источник
Некоторые провайдеры веб-хостинга позволяют изменять параметры PHP в
.htaccess
файле.Вы можете добавить следующую строку:
У меня была та же проблема, что и у вас, и это решение исправило ее.
источник
Вы можете обнаружить, что все настройки для «сообщений об ошибках» или «отображать ошибки» не работают в PHP 7. Это связано с тем, что обработка ошибок изменилась. Попробуйте это вместо:
Или, чтобы ловить исключения и ошибки за один раз (это не обратно совместимо с PHP 5):
источник
try{} catch() {}
везде добавлять код в вашем уже определенном php-коде я даже не хочу думать о том беспорядке, который будет ...$bt = debug_backtrace(); print_r($bt);
.Error
. Если вы переписываете все запросы (за исключением, может быть, JavaScript, CSS, изображений и т. Д.) В файл index.php, то там есть блок try catch, это облегчает работу. Да, любая система, у которой нет единой точки входа, будет большой головной болью для обновления.Это будет работать:
источник
Использование:
Это лучший способ написать это, но синтаксическая ошибка выдает пустой вывод, поэтому используйте консоль для проверки синтаксических ошибок. Лучший способ отладки PHP-кода - использовать консоль; запустите следующее:
источник
Установите это в вашем файле index.php :
источник
Создайте файл с именем php.ini в папке, где находится ваш файл PHP.
Внутри php.ini добавьте следующий код (я даю простую ошибку, показывая код):
источник
Вот скрипт PHP:
Для более подробного объяснения ошибок PHP, посетите PHP Error - error_reporting () .
источник
Если, несмотря на выполнение всех вышеприведенных ответов (или вы не можете отредактировать файл php.ini), вы все равно не можете получить сообщение об ошибке, попробуйте создать новый файл PHP, который включает отчеты об ошибках, а затем включите файл проблемы. например:
Несмотря на то, что все правильно настроено в моем
php.ini
файле, это был единственный способ, которым я мог уловить ошибку пространства имен. Мой точный сценарий был:источник
Я бы обычно использовал следующий код в моих простых проектах PHP.
источник
При использовании PHP в качестве модуля Apache мы можем изменить параметры конфигурации с помощью директив в файлах конфигурации Apache (например, httpd.conf) и файлах .htaccess. Для этого вам потребуются привилегии «AllowOverride Options» или «AllowOverride All».
Проверь это
http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess
источник
Если вы каким-то образом оказались в ситуации, когда вы не можете изменить настройку с помощью
php.ini
или.htaccess
вам не повезло, что вы видите ошибки, когда ваши PHP-скрипты содержат ошибки разбора. Затем вам придется разрешить помечать файлы в командной строке следующим образом:Если ваш хост настолько заблокирован, что не позволяет изменять значение с помощью
php.ini
или.htaccess
, он также может запретить изменение значения с помощьюini_set
. Вы можете проверить это с помощью следующего скрипта PHP:источник
find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'
прощеПоскольку мы сейчас работаем с PHP 7, приведенные здесь ответы больше не верны. Единственный, все еще в порядке, тот от Фрэнка Форте , что говорит , когда он говорит о PHP 7
С другой стороны, вместо того, чтобы пытаться ловить ошибки с помощью try / catch, вы можете использовать хитрость: используйте include.
Вот три куска кода:
Файл: tst1.php
Запуск этого в PHP 7 ничего не покажет.
Теперь попробуйте это:
Файл: tst2.php
Файл: tst3.php
Теперь запустите tst2, который устанавливает отчеты об ошибках, а затем включите tst3. Ты увидишь:
источник
Вы можете сделать что-то вроде ниже:
Установите следующие параметры в вашем главном индексном файле:
Затем на основе ваших требований вы можете выбрать, что вы хотите показать:
Для всех ошибок, предупреждений и уведомлений:
Для всех ошибок:
Для всех предупреждений:
Для всех уведомлений:
Для получения дополнительной информации, проверьте здесь .
источник
index.html
?Вы можете добавить свой собственный обработчик ошибок, который может предоставить дополнительную отладочную информацию. Кроме того, вы можете настроить его, чтобы отправить вам информацию по электронной почте.
источник
Этот код сверху должен работать:
Однако попробуйте отредактировать код на телефоне в файле:
источник
Лучшее / простое / быстрое решение, которое вы можете использовать, если это быстрая отладка, - это окружить ваш код перехватом исключений. Это то, что я делаю, когда хочу проверить что-то быстрое в производстве.
источник
catch (Throwable $e)
лучше ... Или еще один блок catch под нимcatch(Error $e)
Просто пиши:
источник
Вот чему я научился. В файле PHP.INI
источник
Пока ваш сайт работает,
php.ini
файл должен иметь отключенные display_errors по соображениям безопасности. Однако для среды разработки display_errors можно включить для устранения неполадок.источник
Вы можете сделать это, изменив файл php.ini и добавив следующее
ИЛИ вы также можете использовать следующий код, так как это всегда работает для меня
источник
Если у вас установлен Xdebug, вы можете переопределить все настройки, установив:
источник
Вы можете использовать этот код:
источник
Сообщить обо всех ошибках, кроме E_NOTICE
Показать все ошибки PHP
Отключить все сообщения об ошибках
источник
В Unix CLI очень практично перенаправлять только ошибки в файл :
Затем из другой оболочки, для живых изменений:
или просто
источник
./script
скрипт php CLI (hashbang#!/usr/bin/php
) Таким способом вы можете перенаправить ошибки php в файл. Это Unix трубопровод. Это не php, как CGI.Если это в командной строке, вы можете запустить
php
с помощью,-ddisplay_errors=1
чтобы переопределить параметр вphp.ini
:источник
Другие , чем
php.ini
иini_set()
функций в PHP скрипт, вы можете сделать это же самое с.htaccess
иhttpd.conf
директивы показано ниже.Некоторые хостинг-провайдеры позволяют устанавливать настройки PHP через
.htaccess
иhttpd.conf
.Скрыть ошибки PHP
нашел этот ответ, погуглив немного
источник