PHP вообще не возвращает ошибок

Технопарк Нобель
Технопарк Нобель
  • Сообщений: 9
  • Последний визит: 20 января 2025 в 01:51
Я использую PHP и nginx и использую производственную версию php.ini. Итак, для переменной display_error установлено значение Off, и есть веская причина, по которой я хочу именно так. Но для некоторых файлов мне нужно включить отчеты об ошибках. Я использовал ini_set, чтобы включить отчеты об ошибках. Но простой фрагмент кода, например:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
 
echo "hi"errorrrrr
?><code>
не отслеживает ошибку. Он просто возвращает сообщение о внутренней ошибке сервера HTTP 500. Что мне следует сделать, чтобы включить отчеты об ошибках?
Автотрейд
Автотрейд
  • Сообщений: 14
  • Последний визит: 20 января 2025 в 01:49
Вы должны иметь возможность использовать log_errors чтобы записать все ваши ошибки в файл. Вы даже можете использовать error_log записать ошибки в конкретный файл, если это облегчит вам жизнь.
Владимир Соколов
Владимир Соколов
  • Сообщений: 14
  • Последний визит: 20 января 2025 в 01:48
Конечно, PHP не будет выполнять эти директивы, если произойдет синтаксическая ошибка. Потому что этот скрипт даже не начал выполняться! Поскольку это не удалось на этапе синтаксического анализа.

Вам придется использовать другой способ установки этих директив, хотя это может быть сложно. Похоже, ваш PHP работает как CGI, а не как модуль Apache, поэтому единственный способ установить директивы ini — это отредактировать сам php.ini.

Чтобы убедиться, пожалуйста, запустите phpinfo(); и посмотрите, что там говорится о API сервера.

В любом случае, вам придется проверять error_log apache каждый раз, когда вы видите ошибку 500, чтобы выяснить, что именно произошло.
DST Global
DST Global
  • Сообщений: 6
  • Последний визит: Сегодня в 13:45
Попробуйте установить настройки ini в .htaccess файл.

Настройки не сохранятся, если вы поместите их в файл PHP, который не с компилируется из-за синтаксической ошибки.
Владимир Соколов
Владимир Соколов
  • Сообщений: 14
  • Последний визит: 20 января 2025 в 01:48
Если вы просто не можете изменить конфигурацию PHP, вы можете сделать один трюк. Создайте новый файл, содержащий файл с ошибкой. Прежде чем делать включение, установите нужную конфигурацию.

Пример
error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';

Затем просто запустите сценарий-оболочку. Это работает, потому что операторы, предшествующие включению, будут оценены первыми, прежде чем ваш скрипт окончательно умрет из-за ошибки синтаксического анализа.
Авторизуйтесь, чтобы писать на форуме.

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон