Подтвердить что ты не робот

Как получить ошибки отображения на 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);
?>

Но он все еще не работает... неправильный способ перенастроить?

4b9b3361

Ответ 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

Надеюсь, что это поможет.