Привет, я знаю, что есть несколько сообщений по этой теме, и я их всех размазал!
Я не могу включить настройку display_errors в php, независимо от того, что я делаю !!!
Я использую виртуальную коробку с php 5.3, установленную с запуском apache2. я пробовал все, что я могу придумать, чтобы получить ошибки отображения, но ничего не работает.
Я установил php_flag display_errors в файл .htaccess, я даже включил его непосредственно в файле php.ini
display_errors = 1
а также попробовал
display_errors = On
Я использую настройки по умолчанию для сайтов с поддержкой apache, есть ли что-то, что мне нужно сделать здесь, чтобы заставить это работать? Я никогда не сталкивался с этой проблемой при запуске php на моем mac, используя mamp.
Любые предложения были бы очень признательны, что это заставляет меня сходить с ума!
Вы также можете включить его в свой 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.