Возможно, не те логи смотрите! В Первую очередь, проверьте htaccess на предмет ошибок (в некоторых случаях его можно вообще удалить или переименовать, например, в x.htaccess, чтобы отключить его и проверить работоспособность сайта). Если я не ошибаюсь то 500 ошибка хоть и является ошибкой сервера, она также может возникать из-за ошибок в php скриптах в тех случаях когда php подключен как модуль apache (а он в OpenServer, вроде бы, так и работает). Я бы сначала включил в отчет все ошибки php:
ini_set('display_errors', '1');
error_reporting(E_ALL);
А потом уже смотрел бы все остальное… По идее, если вы не мудрили с настройками OpenServer то ошибка на 98% в php-коде.
п.с. лог-файл php — PHP-5.6_error.log в зависимости от используемой версии.
-
Главная
Список форумов
Оффтоп и другие темы
-
Поиск
-
- Текущее время: 04 июн 2023, 07:54
- Часовой пояс: UTC+03:00
-
System32
- Сообщения: 4
- Зарегистрирован: 16 май 2012, 04:39
Error.log
Подскажите, пожалуйста, правильные настройки в php.ini для Open Server, чтобы для каждого сайта генерировался свой отдельный error.log
Как это у Денвера: C:WebServershometest1.ruerror.log
-
System32
- Сообщения: 4
- Зарегистрирован: 16 май 2012, 04:39
Непрочитанное сообщение
System32 » 31 май 2012, 16:33
Asmodey писал(а):Курить маны по htaccess и php variables. Гугля навыдаёт ведра три сцылок.
Как ты меня выручил! Как содержательно, с примерами и комментами!
На простой вопрос ответил никак. И ведь не поленился написать то, чего сам не курил.
Перечитай еще раз мое сообщение. Если нечего ответить, то проходи мимо. Есть что написать по делу, то уже пиши по существу.
Для таких как ты было указанно явно — для Open Server.
А данный форум есть ничто иное как форум поддержки Open Server.
Вопрос давно решен.
И .htaccess здесь совершенно не причем, так же и стандартные php variables.
Так что гуляй Вася, курни четвертое ведро ссылок Гугля. Может быть к осени узнаешь правильный ответ.
P.S.
Давайте теперь повсюду на все вопросы отвечать «Гугля навыдаёт ведра три сцылок».
-
Максим
- Сообщения: 6002
- Зарегистрирован: 11 дек 2010, 20:29
Непрочитанное сообщение
Максим » 31 май 2012, 22:57
Очень просто, откройте конфигурацию веб-сервера через меню, в файле host_conf.txt перед обеими записями </VirtualHost> впишите таки строки:
php_value error_log "%hostdir%/error.log" php_flag log_errors on
Это для последней версии Open Server, под другие поправите сами если надо. При необходимости дополните список опциями php_value error_reporting … и прочими.
-
Asmodey
- Сообщения: 338
- Зарегистрирован: 18 апр 2012, 10:33
Непрочитанное сообщение
Asmodey » 01 июн 2012, 12:40
System32, Я Вам Уважаемый не грубил и не хамил.
Логи php не имеют отношения к OpenServer. Если в качестве вэб сервера используется Апачи, то и настраиваются у него. Либо в конфиге домена, либо в .htaccess.
Добавлено спустя 1 минуту 19 секунд:
Как настраивать переменные php через .htaccess говорит ровно в первой сцылке выдачи.
-
welcom
- Сообщения: 2
- Зарегистрирован: 15 янв 2017, 16:19
Re: Error.log
Непрочитанное сообщение
welcom » 17 янв 2017, 15:54
Добрый день. Подскажите чайнику, как вывести в лог ошибки PHP на опенсервере + Ocstore 2xx, ?
перименовал перед этим файл из .htaccess.txt в просто .htaccess в корне сайта и раскоментил эти строки
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag track_errors on
php_value error_reporting «E_ALL»
но логов ошибок РНР так и не появилось, смотрел файл конфигурации РНР5.4, там что нашел связанное с логированием ошибок, но ничего там не понимаю.
Пожалуйста. подскажите, как включить лог ошибок РНР. Спасибо.
-
s1mplyV
- Сообщения: 21
- Зарегистрирован: 10 фев 2016, 15:05
Re: Error.log
Непрочитанное сообщение
s1mplyV » 17 янв 2017, 21:29
welcom писал(а):Добрый день. Подскажите чайнику, как вывести в лог ошибки PHP на опенсервере + Ocstore 2xx, ?
перименовал перед этим файл из .htaccess.txt в просто .htaccess в корне сайта и раскоментил эти строки
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag track_errors on
php_value error_reporting «E_ALL»
но логов ошибок РНР так и не появилось, смотрел файл конфигурации РНР5.4, там что нашел связанное с логированием ошибок, но ничего там не понимаю.
Пожалуйста. подскажите, как включить лог ошибок РНР. Спасибо.
замени:
php_value error_reporting "E_ALL"
на:
php_value error_reporting 2047
-
welcom
- Сообщения: 2
- Зарегистрирован: 15 янв 2017, 16:19
Re: Error.log
Непрочитанное сообщение
welcom » 18 янв 2017, 11:24
s1mplyV писал(а):
замени:php_value error_reporting "E_ALL"на:
php_value error_reporting 2047
Заменил, но толку мало. Видимо я что то — где то еще не включил….может как то сам HTACEES, кроме как переименовки из .txt и правки, где то еще нужно прописать/включить?
в модулях для РНР как было «нет лога запросов» так и осталось (СМ. КАРТИНКУ НИЖЕ)
И логов всего как было 8 шт, так и осталось. (см. картинку ниже)
Подскажите пожалуйста..
-
Tatyana_Kazakova
- Сообщения: 4
- Зарегистрирован: 20 сен 2018, 12:06
Re: Error.log
Непрочитанное сообщение
Tatyana_Kazakova » 06 окт 2018, 20:30
Добрый день, помогите чайнику, устанавливала Opencart англоязычный на Openserver, всё установилось без проблем, заработало. Сейчас хочу установить русифицированный ocStore, скачала, но при установке ругается, что нету mCrypt, как так? Англоязычная же нормально установилась, по всем требованиям сервак подходил. Помогите, пожалуйста.
Локальный веб-сервер OpenServer не всегда работает корректно, особенно когда речь идет о его первом запуске после установки на компьютер. Часто пользователи сталкиваются с различными проблемами, приводящими к отсутствию отклика при запуске программы.
Далее я расскажу, как быстро избавиться от распространенных трудностей при работе с данным инструментом.
Просмотр логов OpenServer
Начну с небольшого совета, который чаще всего помогает сразу же распознать причину неполадки и решить ее, приложив минимальное количество усилий. Однако уточню, что подойдет эта рекомендация только в том случае, если сам OpenServer запускается в Windows, но при этом старта локального веб-сервера не происходит.
На панели задач есть значок программы, по которому нужно кликнуть правой кнопкой мыши. После этого появится контекстное меню, в котором надо нажать на «Просмотр логов». В новом окне ознакомьтесь с полученными сведениями и определите, из-за чего появилась рассматриваемая ошибка.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Запуск программы от имени администратора
Как бы банально это ни звучало, но часто запуск OpenServer от имени администратора решает все неполадки. Дело в том, что сам компонент тесно связан с сетью и файлами, отвечающими за соединение, поэтому и требует определенных привилегий при взаимодействии с ними. Если права доступа отсутствуют, соответственно, и запуска программы не произойдет.
Вам понадобится выйти из панели управления, найти файл программы в корневом каталоге, щелкнуть по нему правой кнопкой мыши и в контекстном меню выбрать пункт «Запуск от имени администратора». Подождите несколько секунд и проверьте, появилась ли на экране какая-либо информация, свидетельствующая о начале работы локального веб-сервера.
Если этот метод оказался эффективным, но вы не хотите каждый раз запускать программу таким образом, выполните простую настройку. Для этого снова кликните по исполняемому файлу правой кнопкой мыши и перейдите в «Свойства». Там найдите вкладку «Совместимость» и установите галочку возле пункта «Запускать эту программу от имени администратора».
После применения настроек софт всегда будет стартовать с повышенными привилегиями, что позволит избавиться от проблем с запуском.
Редактирование файла hosts
Встроенный в операционную систему файл hosts выполняет важную роль, и часто пользователи задействуют его, если хотят ограничить доступ к конкретным сайтам. Иногда его блокировка средствами Windows становится причиной проблем с запуском OpenServer. Информация об этом появляется в логах при попытке перейти на веб-сервер, поэтому причину можно сразу же распознать.
Хочу дать два совета:
- При использовании стороннего антивируса и брандмауэра настройте их так, чтобы OpenServer не попадал в список заблокированных программ. Стандартные средства можно отключить на время исключительно в качестве проверки.
- Запустите командную строку от имени администратора и введите команду attrib -s -r -h -a C:Windowssystem32driversetchosts, активировав соответствующие атрибуты для упомянутого файла hosts.
Невозможно подключиться к серверу
Если же OpenServer запускается нормально, но при этом соединения с сервером не происходит, советую ознакомиться с дальнейшими инструкциями.
Способ 1: Редактирование MySQL и phpMyAdmin
Этот способ подойдет тем пользователям, которые используют OpenServer в связке с MySQL и phpMyAdmin. Он заключается в небольшой настройке этих двух компонентов для обеспечения нормального соединения, если вдруг возникла такая ситуация, что веб-сервер не хочет запускаться.
Первоочередная задача – создание нового пользователя MySQL. Вводим:
shell> mysql --user=root mysql mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost -> IDENTIFIED BY 'password' WITH GRANT OPTION
Команда отвечает за создание нового пользователя и установку для него пароля.
Откройте конфигурационный файл phpMyAdmin, который находится в папке /etc/phpmyadmin/config.inc.php. Добавьте туда две строки:
$cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass;
Вместо user и pass подставьте имя созданного пользователя и его пароль для MySQL.
Способ 2: Проверка данных авторизации
Последняя рекомендация будет самой банальной – проверка данных авторизации при входе на веб-сервер. Это касается ситуаций, когда на экране появляется ошибка «Невозможно подключиться к серверу MySQL mysqli::real_connect(): (HY000/1045): Access denied for user ‘root’@’localhost’ (using password: NO)». Вам необходимо указать стандартный пароль и логин mysql или root в обоих полях, после чего авторизация должна пройти успешно.
Это были самые распространенные способы решения проблем с запуском OpenServer.
-
#5
вот че написал Оупен сервер после этих обращений в логах:
default: 127.0.0.1 [30/Oct/2018:22:16:32 +0600] «POST /openserver/phpmyadmin/index.php HTTP/1.1» 200 1584 «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
default: 127.0.0.1 [30/Oct/2018:22:17:00 +0600] «POST /openserver/phpmyadmin/index.php HTTP/1.1» 200 1584 «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
scram301018: 127.0.0.1 [30/Oct/2018:22:46:41 +0600] «GET / HTTP/1.1» 200 — «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
default: 127.0.0.1 [30/Oct/2018:22:47:10 +0600] «-» 408 — «-» «-«
default: 127.0.0.1 [30/Oct/2018:22:47:10 +0600] «-» 408 — «-» «-«
default: 127.0.0.1 [30/Oct/2018:22:47:10 +0600] «-» 408 — «-» «-«
scram301018: 127.0.0.1 [30/Oct/2018:22:47:44 +0600] «GET /pages/faq.php HTTP/1.1» 403 1015 «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
default: 127.0.0.1 [30/Oct/2018:22:48:14 +0600] «-» 408 — «-» «-«
default: 127.0.0.1 [30/Oct/2018:22:48:14 +0600] «-» 408 — «-» «-«
scram301018: 127.0.0.1 [30/Oct/2018:22:49:00 +0600] «GET /faq HTTP/1.1» 200 — «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
scram301018: 127.0.0.1 [30/Oct/2018:22:49:06 +0600] «GET /faq HTTP/1.1» 200 — «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
default: 127.0.0.1 [30/Oct/2018:22:49:30 +0600] «-» 408 — «-» «-«
default: 127.0.0.1 [30/Oct/2018:22:49:30 +0600] «-» 408 — «-» «-«
scram301018: 127.0.0.1 [30/Oct/2018:22:49:44 +0600] «GET /rules/ HTTP/1.1» 200 — «-» «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36»
не пойму че он хочет
Где посмотреть логи ошибок я не могу найти такой вкладки в Оупен сервере?
Отключить вывод ошибок на сайте
-
bubanay
- Сообщения: 3
- Зарегистрирован: 12 июл 2014, 16:06
Отключить вывод ошибок на сайте
Расскажите подробно как отключить вывод ошибок » Strict standards: Only variables should be assigned by reference in…» на страницах сайта? В каких файлах что прописать (гуглил и не нашел). Это нужно будит исправить для каждой версии php?
-
vlad_luxor
- Сообщения: 82
- Зарегистрирован: 15 июн 2014, 22:12
Непрочитанное сообщение
vlad_luxor » 12 июл 2014, 17:15
Способ php.ini (для каждой версии отдельно)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL — All errors and warnings (doesn’t include E_STRICT)
; E_ERROR — fatal run-time errors
; E_WARNING — run-time warnings (non-fatal errors)
; E_PARSE — compile-time parse errors
; E_NOTICE — run-time notices (these are warnings which often result
; from a bug in your code, but it’s possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it’s automatically initialized to an
; empty string)
; E_STRICT — run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR — fatal errors that occur during PHP’s initial startup
; E_CORE_WARNING — warnings (non-fatal errors) that occur during PHP’s
; initial startup
; E_COMPILE_ERROR — fatal compile-time errors
; E_COMPILE_WARNING — compile-time warnings (non-fatal errors)
; E_USER_ERROR — user-generated error message
; E_USER_WARNING — user-generated warning message
; E_USER_NOTICE — user-generated notice message
;
; Examples:
;
; — Show all errors, except for notices and coding standards warnings
;
;error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
;
; — Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
; — Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; — Show all errors
;
error_reporting = E_ALL
[upd=1405174634][/upd]
Или же используй функцию error_reporting()
-
bubanay
- Сообщения: 3
- Зарегистрирован: 12 июл 2014, 16:06
Непрочитанное сообщение
bubanay » 12 июл 2014, 17:35
вставляю в конец файла PHP-5.3_php.ini строчку error_reporting(0); и при перезагрузке выдается ошибка.
В начале файла нашел строки:
error_reporting = E_ALL & ~E_NOTICE | E_STRICT display_errors = On display_startup_errors = On log_errors = On
Может достаточно сделать:
error_reporting = E_ALL & ~E_NOTICE | E_STRICT display_errors = Off display_startup_errors = Off log_errors = Off
или не пойдет так?
-
vlad_luxor
- Сообщения: 82
- Зарегистрирован: 15 июн 2014, 22:12
Непрочитанное сообщение
vlad_luxor » 12 июл 2014, 22:01
error_reporting() — функция, которую используют в скрипте РНР, а не в файле php.ini!
Я всегда заменял «E_ALL & ~E_NOTICE | E_STRICT» на «E_WARNING» (точно не помню, дело было зимой)
Настройка во время выполнения
Поведение этих функций зависит от установок в php.ini.
Настройки конфигурации протоколирования событий и ошибок
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
error_reporting | NULL | PHP_INI_ALL | |
display_errors | «1» | PHP_INI_ALL | |
display_startup_errors | «1» | PHP_INI_ALL |
До PHP 8.0.0 значение по умолчанию было "0" .
|
log_errors | «0» | PHP_INI_ALL | |
log_errors_max_len | «1024» | PHP_INI_ALL | |
ignore_repeated_errors | «0» | PHP_INI_ALL | |
ignore_repeated_source | «0» | PHP_INI_ALL | |
report_memleaks | «1» | PHP_INI_ALL | |
track_errors | «0» | PHP_INI_ALL | Объявлено устаревшим в PHP 7.2.0, удалено в PHP 8.0.0. |
html_errors | «1» | PHP_INI_ALL | |
xmlrpc_errors | «0» | PHP_INI_SYSTEM | |
xmlrpc_error_number | «0» | PHP_INI_ALL | |
docref_root | «» | PHP_INI_ALL | |
docref_ext | «» | PHP_INI_ALL | |
error_prepend_string | NULL | PHP_INI_ALL | |
error_append_string | NULL | PHP_INI_ALL | |
error_log | NULL | PHP_INI_ALL | |
error_log_mode | 0o644 | PHP_INI_ALL | Доступно, начиная с PHP 8.2.0 |
syslog.facility | «LOG_USER» | PHP_INI_SYSTEM | Доступно, начиная с PHP 7.3.0. |
syslog.filter | «no-ctrl» | PHP_INI_ALL | Доступно, начиная с PHP 7.3.0. |
syslog.ident | «php» | PHP_INI_SYSTEM | Доступно, начиная с PHP 7.3.0. |
Для подробного описания констант
PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных
директив.
-
error_reporting
int -
Задаёт уровень протоколирования ошибки. Параметр может быть либо числом,
представляющим битовое поле, либо именованной константой.
Соответствующие уровни и константы приведены в разделе
Предопределённые константы,
а также в php.ini. Для установки настройки во время выполнения используйте функцию
error_reporting(). Смотрите также описание директивы
display_errors.Значение по умолчанию равно
E_ALL
.До PHP 8.0.0 значение по умолчанию было:
.E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
При этой настройке не отображаются уровни ошибокE_NOTICE
,
E_STRICT
иE_DEPRECATED
.Замечание:
PHP-константы за пределами PHPИспользование PHP-констант за пределами PHP, например в файле
httpd.conf, не имеет смысла, так как в таких случаях требуются
целочисленные значения (int). Более того, с течением времени будут
добавляться новые уровни ошибок, а максимальное значение константы
E_ALL
соответственно будет расти. Поэтому в месте, где
предполагается указатьE_ALL
, лучше задать большое целое число,
чтобы перекрыть все возможные битовые поля. Таким числом может быть, например,
2147483647
(оно включит все возможные ошибки, не
толькоE_ALL
). -
display_errors
string -
Эта настройка определяет, требуется ли выводить ошибки на экран вместе
с остальным выводом, либо ошибки должны быть скрыты от пользователя.Значение
"stderr"
посылает ошибки в потокstderr
вместоstdout
.Замечание:
Эта функциональность предназначена только для разработки и не должен использоваться в
готовых производственных системах (например, системах, имеющих доступ в интернет).Замечание:
Несмотря на то, что display_errors может быть установлена во время выполнения
(функцией ini_set()), это ни на что не повлияет, если в скрипте есть
фатальные ошибки. Это обусловлено тем, что ожидаемые действия программы во время
выполнения не получат управления (не будут выполняться). -
display_startup_errors
bool -
Даже если display_errors включена, ошибки, возникающие во время запуска PHP, не будут
отображаться. Настойчиво рекомендуем включать директиву display_startup_errors только
для отладки. -
log_errors
bool -
Отвечает за выбор журнала, в котором будут сохраняться сообщения об ошибках. Это
может быть журнал сервера или error_log.
Применимость этой настройки зависит от конкретного сервера.Замечание:
Настоятельно рекомендуем при работе на готовых работающих
web сайтах протоколировать ошибки там, где они отображаются. -
log_errors_max_len
int -
Задание максимальной длины log_errors в байтах. В
error_log добавляется информация
об источнике. Значение по умолчанию 1024. Установка значения в 0
позволяет снять ограничение на длину log_errors. Это ограничение
распространяется на записываемые в журнал ошибки, на отображаемые ошибки,
а также на $php_errormsg, но не на явно вызываемые функции,
такие как error_log().Если используется int, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана в этом разделе FAQ.
-
ignore_repeated_errors
bool -
Не заносить в журнал повторяющиеся ошибки. Ошибка считается
повторяющейся, если происходит в том же файле и в той же строке, и если настройка
ignore_repeated_source выключена. -
ignore_repeated_source
bool -
Игнорировать источник ошибок при пропуске повторяющихся сообщений. Когда
эта настройка включена, повторяющиеся сообщения об ошибках не будут
заноситься в журнал вне зависимости от того, в каких файлах и строках они происходят. -
report_memleaks
bool -
Если настройка включена (по умолчанию), будет формироваться отчёт об утечках памяти,
зафиксированных менеджером памяти Zend. На POSIX платформах этот отчёт будет
направляться в поток stderr. На Windows платформах он будет посылаться в отладчик
функцией OutputDebugString(), просмотреть отчёт в этом случае можно с помощью утилит,
вроде » DbgView. Эта настройка имеет
смысл в сборках, предназначенных для отладки. При этом
E_WARNING
должна быть включена в список error_reporting. -
track_errors
bool -
Если включена, последняя произошедшая ошибка будет первой в переменной
$php_errormsg. -
html_errors
bool -
Если разрешена, сообщения об ошибках будут включать теги HTML. Формат для
HTML-ошибок производит нажимаемые ссылки, ведущие на описание ошибки, либо
функии, в которой она произошла. За такие ссылки ответственны
docref_root и
docref_ext.Если запрещена, то ошибки будут выдаваться простым текстом, без форматирования.
-
xmlrpc_errors
bool -
Если включена, то нормальное оповещение об ошибках отключается и, вместо него,
ошибки выводятся в формате XML-RPC. -
xmlrpc_error_number
int -
Используется в качестве значения XML-RPC элемента faultCode.
-
docref_root
string -
Новый формат ошибок содержит ссылку на страницу с описанием ошибки или
функции, вызвавшей эту ошибку. Можно разместить копию
описаний ошибок и функций локально и задать ini директиве значение
URL этой копии. Если, например, локальная копия описаний доступна по
адресу"/manual/"
, достаточно прописать
docref_root=/manual/
. Дополнительно, необходимо
задать значение директиве docref_ext, отвечающей за соответствие
расширений файлов файлам описаний вашей локальной копии,
docref_ext=.html
. Также возможно использование
внешних ссылок. Например,
docref_root=http://manual/en/
или
docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon
&url=http%3A%2F%2Fwww.php.net%2F"В большинстве случаев вам потребуется, чтобы значение docref_root оканчивалось
слешем"/"
. Тем не менее, бывают случаи, когда
это не требуется (смотрите выше, второй пример).Замечание:
Эта функциональность предназначена только для разработки, так как он облегчает
поиск описаний функций и ошибок. Не используйте его в готовых
производственных системах (например, имеющих доступ в интернет). -
docref_ext
string -
Смотрите docref_root.
Замечание:
Значение docref_ext должно начинаться с точки
"."
. -
error_prepend_string
string -
Строка, которая будет выводиться непосредственно перед сообщением об ошибке.
Используется только тогда, когда на экране отображается сообщение об ошибке.
Основная цель — добавить дополнительную HTML-разметку к сообщению об ошибке. -
error_append_string
string -
Строка, которая будет выводиться после сообщения об ошибке.
Используется только тогда, когда на экране отображается сообщение об ошибке.
Основная цель — добавить дополнительную HTML-разметку к сообщению об ошибке. -
error_log
string -
Имя файла, в который будут добавляться сообщения об ошибках. Файл
должен быть открыт для записи пользователем веб-сервера. Если
используется специальное значениеsyslog
, то
сообщения будут посылаться в системный журнал. На Unix-системах это
syslog(3), на Windows NT — журнал событий. Смотрите также: syslog().
Если директива не задана, ошибки будут направляться в SAPI журналы.
Например, это могут быть журналы ошибок Apache или поток
stderr
командной строки CLI.
Смотрите также функцию error_log(). -
error_log_mode
int -
Режим файла, описанного в error_log.
-
syslog.facility
string -
Указывает, какой тип программы регистрирует сообщение.
Действует только в том случае, если опция error_log установлена в «syslog». -
syslog.filter
string -
Указывает тип фильтра для фильтрации регистрируемых сообщений.
Разрешённые символы передаются без изменений; все остальные записываются в шестнадцатеричном представлении с префиксомx
.-
all
– строка будет разделена
на символы новой строки и все символы будут переданы без изменений
-
ascii
– строка будет разделена
на символы новой строки, а любые непечатаемые 7-битные символы ASCII будут экранированы
-
no-ctrl
– строка будет разделена
на символы новой строки, а любые непечатаемые символы будут экранированы
-
raw
– все символы передаются в системный
журнал без изменений, без разделения на новые строки (идентично PHP до 7.3)
Параметр влияет на ведение журнала через error_log установленного в «syslog» и вызовы syslog().
Замечание:
Тип фильтра
raw
доступен начиная с PHP 7.3.8 и PHP 7.4.0.
Директива не поддерживается в Windows.
-
-
syslog.ident
string -
Определяет строку идентификатора, которая добавляется к каждому сообщению.
Действует только в том случае, если опция error_log установлена в «syslog».
cjakeman at bcs dot org ¶
13 years ago
Using
<?php ini_set('display_errors', 1); ?>
at the top of your script will not catch any parse errors. A missing ")" or ";" will still lead to a blank page.
This is because the entire script is parsed before any of it is executed. If you are unable to change php.ini and set
display_errors On
then there is a possible solution suggested under error_reporting:
<?php
error_reporting
(E_ALL);ini_set("display_errors", 1);
include(
"file_with_errors.php");?>
[Modified by moderator]
You should also consider setting error_reporting = -1 in your php.ini and display_errors = On if you are in development mode to see all fatal/parse errors or set error_log to your desired file to log errors instead of display_errors in production (this requires log_errors to be turned on).
ohcc at 163 dot com ¶
6 years ago
If you set the error_log directive to a relative path, it is a path relative to the document root rather than php's containing folder.
iio7 at protonmail dot com ¶
1 year ago
It's important to note that when display_errors is "on", PHP will send a HTTP 200 OK status code even when there is an error. This is not a mistake or a wrong behavior, but is because you're asking PHP to output normal HTML, i.e. the error message, to the browser.
When display_errors is set to "off", PHP will send a HTTP 500 Internal Server Error, and let the web server handle it from there. If the web server is setup to intercept FastCGI errors (in case of NGINX), it will display the 500 error page it has setup. If the web server cannot intercept FastCGI errors, or it isn't setup to do it, an empty screen will be displayed in the browser (the famous white screen of death).
If you need a custom error page but cannot intercept PHP errors on the web server you're using, you can use PHPs custom error and exception handling mechanism. If you combine that with output buffering you can prevent any output to reach the client before the error/exception occurs. Just remember that parse errors are compile time errors that cannot be handled by a custom handler, use "php -l foo.php" from the terminal to check for parse errors before putting your files on production.
Roger ¶
3 years ago
When `error_log` is set to a file path, log messages will automatically be prefixed with timestamp [DD-MMM-YYYY HH:MM:SS UTC]. This appears to be hard-coded, with no formatting options.
php dot net at sp-in dot dk ¶
8 years ago
There does not appear to be a way to set a tag / ident / program for log entries in the ini file when using error_log=syslog. When I test locally, "apache2" is used.
However, calling openlog() with an ident parameter early in your script (or using an auto_prepend_file) will make PHP use that value for all subsequent log entries. closelog() will restore the original tag.
This can be done for setting facility as well, although the original value does not seem to be restored by closelog().
jaymore at gmail dot com ¶
6 years ago
Document says
So in place of E_ALL consider using a larger value to cover all bit fields from now and well into the future, a numeric value like 2147483647 (includes all errors, not just E_ALL).
But it is better to set "-1" as the E_ALL value.
For example, in httpd.conf or .htaccess, use
php_value error_reporting -1
to report all kind of error without be worried by the PHP version.
Небольшая заметка-подсказка для тех кому необходимо включить или отключить вывод ошибок на своем хостинге.
Когда речь идет о процессе разработки скриптов или сайтов необходимо быть в курсе ошибок и предупреждений, которые случаются в процессе их выполнения. К сожалению некоторые хостинг провайдеры блокируют вывод ошибок и предупреждений на столько сильно, что их вывод невозможно включить без обращения в техническую поддержку. Однако такие хостинги встречаются не часто и как правило включить или выключить вывод ошибок можно одним из следующих способов:
Способ 1: Использование файла .htaccess
Для этого откройте файл .htaccess который располагается в корне Вашего сайта (если его нет, то создайте его). И добавьте в него следующие строчки:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on
Если Вам нужно отключить вывод ошибок — замените слово on на off.
Способ 2: С помощью PHP кода
Вы можете включать или отключать вывод ошибок в определенных файлах с помощью вызова PHP функций.
error_reporting(E_ALL); //вывод всех ошибок error_reporting(0); //отключение ошибок error_reporting(E_ALL & ~E_NOTICE); //вывод ошибок, но не предупреждений типа Notice
Все возможные аргументы Вы можете найти в документации на сайта php.net. Иногда так же может быть полезна команда ini_set:
ini_set('display_errors', 1); //включение ошибок
Однако данная команда обычно заблокирована.
Способ 3: Правка файла php.ini
Иногда хостинг провайдер открывает Вам доступ к файлу конфигурации PHP — php.ini. Доступ может быть открыт полностью, либо частично. Если Вы счастливый обладатель такого хостинга, то включить вывод ошибок можно изменив настройку display_errors.
display_errors = on
После чего необходимо перезагрузить apache.
Примечание: Иногда редактирование файла php.ini вынесено в панель администрирования хостинга. Если Вам не помог ни один описанный способ, зайдите в панель управления хостингом и постарайтесь найти вкладку «настройки php», если данная вкладка присутствует, то скорее всего внутри нее будет опция, позволяющая включать или отключать вывод ошибок.
Запись опубликована в рубрике PHP с метками .htaccess, display error, hide error, PHP, php.ini, Settings, show error, вывести, ошибки, показать, предупреждения, спрятать. Добавьте в закладки постоянную ссылку.
Хостинг-провайдеры нередко отключают или блокируют вывод всех ошибок и предупреждений. Такие ограничения вводятся не просто так. Дело в том, что на рабочих серверах крайне не рекомендуется держать ошибки в открытом доступе. Информация о неисправностях может стать «наживкой» для злоумышленников.
При этом в процессе разработки сайтов и скриптов, очень важно отслеживать возникающие предупреждения. Знать о сбоях и неисправностях также важно и системным администраторам — это позволяет предотвратить проблемы на сайте или сервере.
Самый оптимальный вариант — не просто скрыть показ ошибок, но и настроить запись о них в логах. Это позволит отслеживать предупреждения и не подвергать сервер угрозе.
В статье мы расскажем, как включить и отключить через .htaccess вывод ошибок php, а также двумя другими способами — через скрипт PHP и через файл php.ini.
Обратите внимание: в некоторых случаях изменение настроек вывода возможно только через обращение в техническую поддержку хостинга.
Через .htaccess
Перейдите в каталог сайта и откройте файл .htaccess.
Вариант 1. Чтобы включить вывод, добавьте следующие строки:
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
Чтобы отключить ошибки PHP htaccess, введите команду:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
Также выключить .htaccess display errors можно командой:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Если вам нужно проверить или выключить ошибки только в определенных файлах, это можно сделать с помощью вызова PHP-функций.
Вариант 1. Чтобы включить вывод, используйте команду error_reporting. В зависимости от типа ошибок, которые вы хотите увидеть, подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
А для всех типов, исключая тип Notice, так:
error_reporting(E_ALL & ~E_NOTICE)
Чтобы отключить вывод, введите команду:
Чтобы отключить логирование повторяющихся ошибок, введите:
# disable repeated error logging
php_flag ignore_repeated_errors on
php_flag ignore_repeated_source on
Вариант 2. Чтобы проверить конкретный кусок кода, подойдет команда ниже. В зависимости от типа ошибок, которые вы хотите увидеть, в скобках подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
ini_set('display_errors', 'On')
error_reporting(E_ALL)
После этого в консоли введите:
ini_set('display_errors', 'Off')
Вариант 3. Ещё один из вариантов подключения через скрипт:
php_flag display_startup_errors on
php_flag display_errors on
Для отключения укажите:
php_flag display_startup_errors off
php_flag display_errors off
Вариант 4. Чтобы настроить вывод с логированием через конфигурацию веб-сервера, введите:
- для Apache —
ErrorLog «/var/log/apache2/my-website-error.log»
, - для Nginx —
error_log /var/log/nginx/my-website-error.log
.
Подробнее о других аргументах читайте в документации на официальном сайте php.net.
Через файл php.ini
Настроить отслеживание также можно через файл php.ini. Этот вариант подойдет, когда отображение или скрытие ошибок нужно настроить для всего сайта или кода. Обратите внимание: возможность настройки через файл php.ini есть не у всех, поскольку некоторые хостинг-провайдеры частично или полностью закрывают доступ к файлу.
Вариант 1. Если у вас есть доступ, включить вывод можно командой:
После этого нужно перезагрузить сервер:
sudo apachectl -k graceful
Вариант 2. Чтобы включить вывод, используйте команду error_reporting. В зависимости от типа ошибок, которые вы хотите увидеть, после знака = подставьте нужное значение. Например, команда для вывода всех ошибок будет выглядеть так:
error_reporting = E_ALL
display_errors On
После ввода перезагрузите сервер:
sudo apachectl -k graceful
Чтобы скрыть отображение, во второй строке команды укажите Оff вместо On:
Теперь вы знаете, как настроить не только через PHP и php.ini, но и через htaccess отображение ошибок.
В этом руководстве мы расскажем о различных способах того, как в PHP включить вывод ошибок. Мы также обсудим, как записывать ошибки в журнал (лог).
Как быстро показать все ошибки PHP
Самый быстрый способ отобразить все ошибки и предупреждения php — добавить эти строки в файл PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Что именно делают эти строки?
Функция ini_set попытается переопределить конфигурацию, найденную в вашем ini-файле PHP.
Display_errors и display_startup_errors — это только две из доступных директив. Директива display_errors определяет, будут ли ошибки отображаться для пользователя. Обычно директива dispay_errors не должна использоваться для “боевого” режима работы сайта, а должна использоваться только для разработки.
display_startup_errors — это отдельная директива, потому что display_errors не обрабатывает ошибки, которые будут встречаться во время запуска PHP. Список директив, которые могут быть переопределены функцией ini_set, находится в официальной документации .
К сожалению, эти две директивы не смогут отображать синтаксические ошибки, такие как пропущенные точки с запятой или отсутствующие фигурные скобки.
Отображение ошибок PHP через настройки в php.ini
Если ошибки в браузере по-прежнему не отображаются, то добавьте директиву:
display_errors = on
Директиву display_errors следует добавить в ini-файл PHP. Она отобразит все ошибки, включая синтаксические ошибки, которые невозможно отобразить, просто вызвав функцию ini_set в коде PHP.
Актуальный INI-файл можно найти в выводе функции phpinfo (). Он помечен как “загруженный файл конфигурации” (“loaded configuration file”).
Отображать ошибки PHP через настройки в .htaccess
Включить или выключить отображение ошибок можно и с помощью файла .htaccess, расположенного в каталоге сайта.
php_flag display_startup_errors on
php_flag display_errors on
.htaccess также имеет директивы для display_startup_errors и display_errors.
Вы можете настроить display_errors в .htaccess или в вашем файле PHP.ini. Однако многие хостинг-провайдеры не разрешают вам изменять ваш файл PHP.ini для включения display_errors.
В файле .htaccess также можно включить настраиваемый журнал ошибок, если папка журнала или файл журнала доступны для записи. Файл журнала может быть относительным путем к месту расположения .htaccess или абсолютным путем, например /var/www/html/website/public/logs
.
php_value error_log logs/all_errors.log
Включить подробные предупреждения и уведомления
Иногда предупреждения приводят к некоторым фатальным ошибкам в определенных условиях. Скрыть ошибки, но отображать только предупреждающие (warning) сообщения можно вот так:
error_reporting(E_WARNING);
Для отображения предупреждений и уведомлений укажите «E_WARNING | E_NOTICE».
Также можно указать E_ERROR, E_WARNING, E_PARSE и E_NOTICE в качестве аргументов. Чтобы сообщить обо всех ошибках, кроме уведомлений, укажите «E_ALL & ~ E_NOTICE», где E_ALL обозначает все возможные параметры функции error_reporting.
Более подробно о функции error_reporting ()
Функция сообщения об ошибках — это встроенная функция PHP, которая позволяет разработчикам контролировать, какие ошибки будут отображаться. Помните, что в PHP ini есть директива error_reporting, которая будет задана этой функцией во время выполнения.
error_reporting(0);
Для удаления всех ошибок, предупреждений, сообщений и уведомлений передайте в функцию error_reporting ноль. Можно сразу отключить сообщения отчетов в ini-файле PHP или в .htaccess:
error_reporting(E_NOTICE);
PHP позволяет использовать переменные, даже если они не объявлены. Это не стандартная практика, поскольку необъявленные переменные будут вызывать проблемы для приложения, если они используются в циклах и условиях.
Иногда это также происходит потому, что объявленная переменная имеет другое написание, чем переменная, используемая для условий или циклов. Когда E_NOTICE передается в функцию error_reporting, эти необъявленные переменные будут отображаться.
error_reporting(E_ALL & ~E_NOTICE);
Функция сообщения об ошибках позволяет вам фильтровать, какие ошибки могут отображаться. Символ «~» означает «нет», поэтому параметр ~ E_NOTICE означает не показывать уведомления. Обратите внимание на символы «&» и «|» между возможными параметрами. Символ «&» означает «верно для всех», в то время как символ «|» представляет любой из них, если он истинен. Эти два символа имеют одинаковое значение в условиях PHP OR и AND.
error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);
Эти три строки кода делают одно и то же, они будут отображать все ошибки PHP. Error_reporting(E_ALL) наиболее широко используется разработчиками для отображения ошибок, потому что он более читабелен и понятен.
Включить ошибки php в файл с помощью функции error_log ()
У сайта на хостинге сообщения об ошибках не должны показываться конечным пользователям, но эта информация все равно должна быть записана в журнал (лог).
Простой способ использовать файлы журналов — использовать функцию error_log, которая принимает четыре параметра. Единственный обязательный параметр — это первый параметр, который содержит подробную информацию об ошибке или о том, что нужно регистрировать. Тип, назначение и заголовок являются необязательными параметрами.
error_log("There is something wrong!", 0);
Параметр type, если он не определен, будет по умолчанию равен 0, что означает, что эта информация журнала будет добавлена к любому файлу журнала, определенному на веб-сервере.
error_log("Email this error to someone!", 1, "someone@mydomain.com");
Параметр 1 отправит журнал ошибок на почтовый ящик, указанный в третьем параметре. Чтобы эта функция работала, PHP ini должен иметь правильную конфигурацию SMTP, чтобы иметь возможность отправлять электронные письма. Эти SMTP-директивы ini включают хост, тип шифрования, имя пользователя, пароль и порт. Этот вид отчетов рекомендуется использовать для самых критичных ошибок.
error_log("Write this error down to a file!", 3, "logs/my-errors.log");
Для записи сообщений в отдельный файл необходимо использовать тип 3. Третий параметр будет служить местоположением файла журнала и должен быть доступен для записи веб-сервером. Расположение файла журнала может быть относительным путем к тому, где этот код вызывается, или абсолютным путем.
Журнал ошибок PHP через конфигурацию веб-сервера
Лучший способ регистрировать ошибки — это определить их в файле конфигурации веб-сервера.
Однако в этом случае вам нужно попросить администратора сервера добавить следующие строки в конфигурацию.
Пример для Apache:
ErrorLog "/var/log/apache2/my-website-error.log"
В nginx директива называется error_log.
error_log /var/log/nginx/my-website-error.log;
Теперь вы знаете, как в PHP включить отображение ошибок. Надеемся, что эта информация была вам полезна.
Нет кода без ошибок. Как говорят, на ошибках учатся. Ну, а мы сегодня научимся включать и отключать вывод ошибок в PHP.
Если вы видите белый экран, вместо какого-либо ожидаемого результата, значит скорее всего в вашем коде произошла ошибка. Посмотрите, если в ответе сервера пришёл статус ошибки, например 500, но при этом на экране ничего нет, то вам нужно включить вывод ошибок.
Включить ошибки в PHP
Включение ошибок и предупреждений в php-скрипте
Для того, чтобы включить ошибки прямо в скрипте, перед выполняемым кодом напишите следующее:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
После этого обновите страницу, сообщение об ошибке должно отобразиться. Вы также можете включить ошибки и предупреждения на уровне сервера.
Включение ошибок и предупреждений в файле .htaccess
Если у вас есть доступ к редактированию файла .htaccess, то пропишите в нём следующие строки:
php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL
После этого перезапустите Apache.
Включение ошибок и предупреждений в файле php.ini
Конечно же, можно настроить отображение ошибок в конфигурационном файле PHP. Для этого, добавить в файл php.ini следующее:
error_reporting = E_ALL display_errors = On display_startup_errors = On
После этого перезапустите PHP.