Недавно на моем сервере что-то изменилось, что вызывало internal error 500
каждый раз, когда в PHP существует синтаксис или логическая ошибка. Эти ошибки обрабатываются в exception class
и я не хочу, чтобы они выбрасывали ошибку 500
.
Забыл упомянуть: когда страница не существует => 404 ошибки работают просто отлично
У меня в настоящее время есть error_reporting on to strict. Я думаю, это может быть мой apache config file
<Directory /var/www/public/> <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{QUERY_STRING} (.*)(http|https|ftp):\/\/(.*) #RewriteRule ^(.+)$ - [env=rfi:true] #RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domain\.com$ RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] </IfModule> #CustomLog /path/to/logs/rfi.log combined env=rfi Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ErrorDocument 404 http://www.domain.com/404.php #ErrorDocument 403 http://www.domain.com/403.php ErrorDocument 500 http://www.domain.com/500.php </Directory> <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log
Кто-нибудь видит что-нибудь, что может вызвать ошибку 500?
PHP-синтаксическая ошибка не может быть решена. Если файл не может быть проанализирован, вы получите неизбежную ошибку 500. Вы можете настроить php.ini, чтобы не отображать ошибки на клиенте, но он все равно зарегистрирует ошибку.
Чтобы подавить все ошибки от отправки клиенту, в наборе файлов php.ini
display_errors = Off
Когда встречается ошибка 500, они просто видят белый пустой экран.
Невозможно отправить сообщение по электронной почте, когда это произойдет за пределами, чем наличие какого-либо скрипта, который проверяет ваши Apache на журналы ошибок php. Возможно, вы сможете установить файл error.php для отображения на 500 ошибках, настроив его в файле htaccess, но я не знаю. Если вы можете, вы можете добавить в него некоторый базовый код электронной почты php, но он был бы общим – он не мог определить фактическую ошибку.