Как получить ошибки отображения на PHP? (Я добавил ini_set и error_reporting, но просто дает 500 ошибок)
Итак, у меня нет никаких ошибок на моей текущей веб-странице, но я хочу видеть ошибку, когда они появляются, а не на странице ошибок HTTP 500. Я немного искал язык и думал, что добавление этих двух строк исправит все.
ini_set('display_errors', 'On');
error_reporting(E_ALL);
ПРИМЕЧАНИЕ. У меня нет доступа к файлу php.ini, поскольку я использую свой сервер учетной записи школы.
Итак, я ввел ошибку (без точки с запятой после $buggy), как в верхней части моей страницы:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy
$x = 4 + 2;
...
Однако я просто получаю ошибку сервера:
"На веб-сайте произошла ошибка при извлечении http://mywebpage.com/. Возможно, она отключена для обслуживания или настроена неправильно.
Любые идеи?
EDIT:
Я переконфигурировал свой код:
<?php
include_once 'database/errorSettings.php';
?>
<?php
$buggy // whoops
$x = 4 + 2;
...
errorSettings.php:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
Но он все еще не работает... неправильный способ перенастроить?
Ответы
Ответ 1
У вас есть ошибка синтаксического анализа. Они бросаются перед выполнением любого кода. Файл PHP должен анализироваться целиком до того, как любой его код может быть выполнен. Если в файле, где вы устанавливаете уровни ошибок, есть ошибка синтаксического анализа, они не будут вступать в силу к моменту возникновения ошибки.
Либо разбить файлы на более мелкие части, например, установить уровни ошибок в одном файле, а затем include
добавить другой файл, содержащий фактический код (и ошибки), или установить уровни ошибок вне PHP, используя php.ini или .htaccess.
Ответ 2
Вам нужно установить значение error_reporting в файле .htaccess. Поскольку существует ошибка синтаксического анализа, она никогда не запускает функцию error_reporting() в вашем PHP-коде.
Попробуйте это в файле .htaccess(если вы можете использовать его):
php_flag display_errors 1
php_value error_reporting 30719
Я думаю, что 30719 соответствует E_ALL, но я могу ошибаться.
Изменить обновление: http://php.net/manual/en/errorfunc.constants.php
int error_reporting ([ int $level ] )
---
32767 E_ALL (integer)
All errors and warnings, as supported, except of level E_STRICT prior to PHP 5.4.0. 32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
Ответ 3
Добавление к тому, что сказано выше. Это ошибка синтаксического анализа, поэтому для отладки ошибки синтаксического анализа создайте новый файл в корне с именем debugSyntax.php. Поместите это в него:
<?php
/////// SYNTAX ERROR CHECK ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');
//replace "pageToTest.php" with the file path that you want to test.
include('pageToTest.php');
?>
Запустите страницу debugSyntax.php и отобразите ошибки разбора на странице, которую вы выбрали для тестирования.
Ответ 4
Просто напишите следующий код поверх файла PHP:
ini_set('display_errors','on');
Ответ 5
У меня была эта проблема при использовании PHP5.4 и Plesk 11.5
Как-то, сообщения об ошибках и отображения ошибок на странице конфигурации домена Plesk полностью перекрывали любые локальные настройки в .htaccess или PHP-скриптах. Я не нашел способа предотвратить это, поэтому используйте настройки Plesk, чтобы включить и выключить отчет об ошибках.
У вас могут быть настройки в php.ini, которые не позволяют локальному сайту переопределять эти параметры, возможно, принудительно используются панелью управления, используемой на вашем сервере.
Ответ 6
Людям, использующим Codeigniter (я на C3):
Файл index.php перезаписывает конфигурацию php.ini, поэтому файл index.php, строка 68:
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
Вы можете изменить эту опцию, чтобы установить, что вам нужно. Здесь полный список:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
Надеюсь, что это поможет.