Как отключить отчет об ошибках PHP в CodeIgniter?
Я прочитал официальную документацию , и все, что они говорят, это то, что у меня должна быть функция error_reporting(), расположенная в верхней части основного индекса. php. Но у меня нет файла index.php
в моем проекте. Мой базовый контроллер называется core
, поэтому для перехода к основному индексу я перехожу к www.mysite.dom/core/
. Поэтому я предполагаю, что эта функция отчетности об ошибках должна находиться внутри этого контроллера? Тогда я хотел бы знать, где я должен положить его в контроллер и что его внутри, чтобы отключить отчет. Спасибо всем за помощь, угадайте, что я чего-то не хватает:/
Ответы
Ответ 1
Вот типичная структура нового проекта Codeigniter:
- application/
- system/
- user_guide/
- index.php <- this is the file you need to change
Обычно я использую этот код в своем индексе CI index.php. Просто измените local_server_name на имя вашего локального веб-сервера.
С помощью этого кода вы можете развернуть свой сайт на своем производственном сервере без изменения index.php каждый раз.
// Domain-based environment
if ($_SERVER['SERVER_NAME'] == 'local_server_name') {
define('ENVIRONMENT', 'development');
} else {
define('ENVIRONMENT', 'production');
}
/*
*---------------------------------------------------------------
* ERROR REPORTING
*---------------------------------------------------------------
*
* Different environments will require different levels of error reporting.
* By default development will show errors but testing and live will hide them.
*/
if (defined('ENVIRONMENT')) {
switch (ENVIRONMENT) {
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
ini_set('display_errors', 0);
break;
default:
exit('The application environment is not set correctly.');
}
}
Ответ 2
Измените файл CI index.php на:
if ($_SERVER['SERVER_NAME'] == 'local_server_name') {
define('ENVIRONMENT', 'development');
} else {
define('ENVIRONMENT', 'production');
}
if (defined('ENVIRONMENT')){
switch (ENVIRONMENT){
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
IF Ошибки PHP отключены, но все ошибки MySQL все еще будут отображаться, отключите их в файле /config/database.php. Установите для параметра db_debug значение false:
$db['default']['db_debug'] = FALSE;
Кроме того, вы можете использовать active_group как разработка и production для соответствия среде https://www.codeigniter.com/user_guide/database/configuration.html
$active_group = 'development';
$db['development']['hostname'] = 'localhost';
$db['development']['username'] = '---';
$db['development']['password'] = '---';
$db['development']['database'] = '---';
$db['development']['dbdriver'] = 'mysql';
$db['development']['dbprefix'] = '';
$db['development']['pconnect'] = TRUE;
$db['development']['db_debug'] = TRUE;
$db['development']['cache_on'] = FALSE;
$db['development']['cachedir'] = '';
$db['development']['char_set'] = 'utf8';
$db['development']['dbcollat'] = 'utf8_general_ci';
$db['development']['swap_pre'] = '';
$db['development']['autoinit'] = TRUE;
$db['development']['stricton'] = FALSE;
$db['production']['hostname'] = 'localhost';
$db['production']['username'] = '---';
$db['production']['password'] = '---';
$db['production']['database'] = '---';
$db['production']['dbdriver'] = 'mysql';
$db['production']['dbprefix'] = '';
$db['production']['pconnect'] = TRUE;
$db['production']['db_debug'] = FALSE;
$db['production']['cache_on'] = FALSE;
$db['production']['cachedir'] = '';
$db['production']['char_set'] = 'utf8';
$db['production']['dbcollat'] = 'utf8_general_ci';
$db['production']['swap_pre'] = '';
$db['production']['autoinit'] = TRUE;
$db['production']['stricton'] = FALSE;