Необходимо скрыть от пользователей сообщения PHP об ошибках.
Установите следующие значения в вашем файле php.ini или в конфигурационном файле веб-сервера:
display_errors=off
log_errors=on
Руководствуясь этими настройками, PHP не отображает ошибки в броузере в виде HTML, а сохраняет их в серверном журнале ошибок.
Если параметр конфигурации log_errors установлен в on, то сообщения об ошибках записываются в серверный журнал ошибок. Для того что-бы PHP записывал ошибки в отдельный файл, присвойте параметру error_log имя этого файла:
error_log = /var/log/php.error.log
Если параметр error_log установлен в значение syslog, то сообщения
PHP об ошибках посылаются системному регистратору ошибок с помощью syslog(3) в UNIX и Event Log в Windows NT.
Существует множество сообщений об ошибках, которые следует показывать пользователю, например о том, что он неправильно заполнил
форму, но необходимо оградить пользователя от внутренних ошибок,
которые могут быть результатом недостатков программы. Для этого
есть две причины. Во-первых, эти ошибки показывают ваш непрофессионализм (опытным пользователям) и, во-вторых, вносят путаницу
(для новичков). Если что-то идет не так во время записи входной информации формы в базу данных, то надо проверить код возврата в ответ на запрос в базу данных и послать сообщение пользователю с извинениями и просьбой зайти попозже. Показ пользователям малопонятных сообщений непосредственно от PHP не способствует повышению
доверия к вашему сайту.
Во-вторых, показ пользователю сообщений об ошибках представляет
риск для безопасности. В зависимости от базы данных и типа ошибок,
сообщения об ошибках могут содержать информацию о способе регистрации в базе данных и о ее структуре. Злоумышленник, воспользовавшись этой информацией, может предпринять атаку на ваш сайт.
Например, если сервер базы данных «упал», а вы пытаетесь соединиться с ним с помощью функции mysql_connect(), то PHP выдаст следующее предупреждение:
<br>
<b>Warning</b>: Can't connect to MySQL server on 'db.example.com' (111) in
<b>/www/docroot/example.php</b> on line <b>3</b>
<br>
Пользователь, броузеру которого будет послано это предупреждающее сообщение, узнает, что ваш сервер базы данных называется db.example.com, и сможет организовать на него атаку.
Документацию по параметрам конфигурации PHP на http://www.php.net/configuration.