Не удается включить 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.
Любые предложения были бы очень благодарны за то, что это сводит меня с ума!
Ответы
Ответ 1
Вы также можете включить его в своем PHP script обычно:
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
script с помощью приведенных выше инструкций, затем include()
неисправный script.
Ответ 2
Per display_errors
:
Хотя display_errors
может быть задано во время выполнения (ini_set()
), это не будет иметь никакого эффекта, если script имеет фатальные ошибки. Это связано с тем, что желаемое действие во время выполнения не выполняется.
поэтому, если вы имеете дело с проблемой, не отображающей ошибки, и у вас могут быть синтаксические ошибки в ваших сценариях, установка отображения ошибок ini_set не поможет, для этого требуются изменения в php.ini
sudo sed -i 's/display_errors = Off/display_errors = On/' /etc/php5/apache2/php.ini
Ответ 3
На самом деле, в 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 default behavior.
; Please see the actual settings later in the document for more details as to why
; we recommend these changes in PHP 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 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, и вы получите то, что вам нужно.
Ответ 4
Попробуйте error_reporting = E_ALL
. Кроме того, вы уверены, что редактируете правильный php.ini?
Ответ 5
Я обычно использую (в PHP script я пытаюсь отлаживать):
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);
Это обычно выполняет эту работу, но если у вас есть неприятная непревзойденная скобка, она не может быть достаточной. Поэтому, если он еще не работает, это может зависеть от некоторого кода ошибки PHP.
Возможно, вы редактируете неправильный php.ini: используйте phpinfo() и выполните поиск частей в разделе "Загруженный файл конфигурации" "и" Дополнительные .ini файлы проанализированы ".
P.S.: display_errors = 1
и display_errors = On
в php.ini эквивалентны.
Ответ 6
Попробуйте:
grep "display_errors" /etc/php5/apache2/php.ini
Просто, чтобы проверить, сколько раз оно появляется.
Ответ 7
В моем случае мне нужно было
set_error_handler(NULL);
<the code to debug on screen>
restore_error_handler();
Я определил собственный обработчик ошибок, который полностью обошел обработчик ошибок PHP по умолчанию. Тем не менее, я не хотел постоянно удалять обработчик ошибок. Итак, я использовал set_error_handler(NULL);
до reset значение error_handler к его значению по умолчанию. Я использовал restore_error_handler();
, чтобы вернуть свой оригинальный пользовательский error_handler.