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

Не удается включить 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. ​​

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

4b9b3361

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