Не удается включить php display_errors

Привет, я знаю, что есть несколько сообщений по этой теме, и я их всех размазал!

Я не могу включить настройку display_errors в php, независимо от того, что я делаю !!!

Я использую виртуальную коробку с php 5.3, установленную с запуском apache2. я пробовал все, что я могу придумать, чтобы получить ошибки отображения, но ничего не работает.

Я установил php_flag display_errors в файл .htaccess, я даже включил его непосредственно в файле php.ini

display_errors = 1 

а также попробовал

 display_errors = On 

Я использую настройки по умолчанию для сайтов с поддержкой apache, есть ли что-то, что мне нужно сделать здесь, чтобы заставить это работать? Я никогда не сталкивался с этой проблемой при запуске php на моем mac, используя mamp.

Любые предложения были бы очень признательны, что это заставляет меня сходить с ума!

Solutions Collecting From Web of "Не удается включить php display_errors"

Вы также можете включить его в свой PHP-скрипт:

 ini_set("display_errors", 1); ini_set("track_errors", 1); ini_set("html_errors", 1); error_reporting(E_ALL); 

Если это не поможет, попробуйте сначала обходное решение:

 set_error_handler("var_dump"); 

Может использоваться для повторения оригинального поведения, если оно подавлено каким-то другим обстоятельством.

Помните, что это работает только для обеспечения ошибок времени выполнения . Если вы подозреваете ошибки синтаксического анализа , вам обязательно нужно включить отображение ошибок в php.ini / .htaccess / .user.ini . – Else создайте скрипт test.php wrapper с приведенными выше инструкциями, затем include() неисправный скрипт.

Для display_errors :

Хотя display_errors можно установить во время выполнения (с помощью ini_set() ), это не будет иметь никакого эффекта, если скрипт имеет фатальные ошибки. Это связано с тем, что желаемое действие во время выполнения не выполняется.

поэтому, если вы имеете дело с проблемой, не отображающей ошибки, и у вас могут быть синтаксические ошибки в ваших сценариях, установка отображения ошибок ini_set не поможет, для этого требуются изменения в php.ini

 sudo sed -i 's/display_errors = Off/display_errors = On/' /etc/php5/apache2/php.ini 

Фактически, в php.ini есть два места, где вы можете столкнуться с линией display_errors . По ошибке вы можете включить первый, но он переопределяется последним display_errors = Off (такая ошибка вводится со мной).

Есть блок, который идет первым в файле:

 ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;;;;;;;;;;;;;;; ; The following are all the settings which are different in either the production ; or development versions of the INIs with respect to PHP's default behavior. ; Please see the actual settings later in the document for more details as to why ; we recommend these changes in PHP's behavior. ; display_errors ; Default Value: On ; Development Value: On ; Production Value: Off 

И последнее появление display_errors значительно ниже в файле:

 ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; It's recommended that errors be logged on production servers rather than ; having the errors sent to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = Off 

Обязательно измените последнее появление display_errors . Просто установите его на display_errors = On , перезапустите Apache, и вы получите то, что вам нужно.

Обычно я использую (в PHP-скрипте я пытаюсь отлаживать):

 ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(E_ALL); 

Это обычно делает работу, но если у вас есть неприятная непревзойденная скобка, ее может не хватить. Поэтому, если он еще не работает, он может зависеть от некоторого кода ошибок PHP.

Возможно, вы редактируете неправильный php.ini: используйте phpinfo () и выполните поиск частей в разделе «Загруженный файл конфигурации» и «Дополнительные файлы .ini».

PS: display_errors = 1 и display_errors = On в php.ini эквивалентны.

Попробуйте error_reporting = E_ALL . Кроме того, вы уверены, что редактируете правильный php.ini?

Пожалуйста попробуйте:

 grep "display_errors" /etc/php5/apache2/php.ini 

Просто чтобы проверить, сколько раз оно появляется.

В моем случае, что я должен был сделать, это

 set_error_handler(NULL); <the code to debug on screen> restore_error_handler(); 

Я определил собственный обработчик ошибок, который полностью обошел обработчик ошибок PHP по умолчанию. Тем не менее, я не хотел постоянно удалять обработчик ошибок. Итак, я использовал set_error_handler(NULL); чтобы сбросить значение error_handler до значения по умолчанию. Я использовал restore_error_handler(); чтобы вернуть мой оригинальный пользовательский error_handler.