Итак, у меня нет никаких ошибок на моей текущей веб-странице, но я хочу видеть ошибку, когда они появляются, а не на странице ошибок 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/ . Возможно, она не работает для обслуживания или неправильно настроена».
Есть идеи?
РЕДАКТИРОВАТЬ:
Я переконфигурировал свой код:
<?php include_once 'database/errorSettings.php'; ?> <?php $buggy // whoops $x = 4 + 2; ...
errorSettings.php:
<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); ?>
Но он все еще не работает … неправильный способ перенастроить?
У вас есть ошибка синтаксического анализа. Они бросаются перед выполнением любого кода. Файл PHP должен анализироваться целиком до того, как любой его код может быть выполнен. Если в файле, где вы устанавливаете уровни ошибок, есть ошибка синтаксического анализа, они не будут вступать в силу к моменту возникновения ошибки.
Либо разбить файлы на более мелкие части, например, установить уровни ошибок в одном файле, а затем include
другой файл, который содержит фактический код (и ошибки), или установить уровни ошибок за пределами PHP, используя директивы php.ini или .htaccess.
Вам нужно установить значение 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
Добавление к тому, что было сказано выше. Это ошибка синтаксического анализа, поэтому для отладки ошибки синтаксического анализа создайте новый файл в корне с именем 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'); ?>
в<?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 и отобразите ошибки разбора на странице, которую вы выбрали для проверки.
Просто напишите следующий код поверх файла PHP:
ini_set('display_errors','on');
У меня была эта проблема при использовании PHP5.4 и Plesk 11.5
Так или иначе, сообщения об ошибках и отображения ошибок на странице конфигурации домена Plesk полностью перекрывали любые локальные настройки в .htaccess или PHP-скриптах. Я не нашел способа предотвратить это, поэтому используйте настройки Plesk, чтобы включить или отключить отчет об ошибках.
У вас могут быть настройки в php.ini, которые не позволяют локальному сайту переопределять эти параметры, возможно, выполняются панелью управления, используемой на вашем сервере.
Людям, использующим 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
Надеюсь, поможет.