2014-01-24 3 views
0

Я работаю с приложением PHP, которое подключается к базе данных MySQL с использованием PDO. Всякий раз, когда есть ошибка в связи с этим мы получаем ошибку, как это:Ошибка PHP предоставляет учетные данные базы данных

PHP PDO Error

Это часто происходит при обновлении деталей сервера или при добавлении нового сервера в кластер, а иногда виден конечным пользователям. Я особенно обеспокоен тем, что в результате ошибки отображаются сведения о соединении, используемые для базы данных. Можно ли изменить отчет об ошибках, чтобы показать, что ошибка не включает сами данные о соединении?

+0

ли вы Xdebug установили на этих серверах? –

ответ

1

Это что, вы ищете?

try { 
    $rs = $db->prepare('query_here'); 
    $rs->execute(); 
    $foo = $rs->fetchAll(); 
} catch (PDOException $e) { 
    die("Oh noes! There's an error in the query!"); 
} 

В производстве, если вы не можете получить доступ к файлу «php.ini», чем установить error_reporting(0), и если вы можете редактировать файл «php.ini», чем набор display_errors = off.

0

вы можете попробовать/поймать исключение и изменить сообщение, но НЕ ДОЛЖНЫ показывать ошибки при производстве! Вы можете установить display_errors = выключен в файле php.ini или путем добавления этого:

error_reporting(0); 
ini_set('display_errors', 0); 
+0

Почему error_reporting (0)? если вы вообще не показываете ошибки? Это не хорошо – Benedictus

+0

Согласен, Ник добавил, что когда он редактировал сообщение –

1

Это хорошая практика, чтобы не отображать любые ошибки PHP, когда он не находится в разработке. Вместо этого вы можете их зарегистрировать.

Вы можете использовать эти команды или записать их вручную в файл php.ini.

ini_set('display_errors', '0'); 
ini_set('log_errors', 1); 
ini_set('error_log', 'your custom log file (optional)'); 

Также вы должны использовать попробовать поймать блок каждый раз, когда вы запрос к базе данных

try { 
    //query the database here 
} catch (PDOException $e) { 
    trigger_error('your error here'); 
} 
Смежные вопросы