Как настроить Codeigniter для сообщения обо всех ошибках?
У меня была строка - $autoload['libraries'] = array('database');
, в CI autoload.php
. Из-за этого я получал пустую страницу. Когда я удалил параметр 'database'
, тогда я начал получать вывод.
Теперь мой вопрос заключается не в настройке базы данных, а в том, как настроить CI, чтобы говорить о ней. Когда 'database'
был включен, все, что я получил, было полной пустой страницей. Ошибка в журнале php, ошибки в журнале Apache и ошибок в журнале CI. В PHP я установил E_ALL
. В моей конфигурации CI я установил log_threshold
в 4
, то есть все сообщения должны быть зарегистрированы. Что еще мне нужно сделать?
Ответы
Ответ 1
Это зависит от вашей версии CI. Для < 2.x отредактируйте индекс верхнего уровня index.php и настройте функцию error_reporting для использования E_ALL "
error_reporting(E_ALL);
Для >= 2.x отредактируйте индекс верхнего уровня index.php и убедитесь, что ENVIRONMENT установлен как:
define('ENVIRONMENT', 'development');
который устанавливает error_reporting в E_ALL.
Ответ 2
Создайте файл .htaccess в своем веб-корте со следующим содержимым
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value error_reporting -1
php_value log_errors_max_len 0
Надеюсь, это должно включить ваши журналы.
Удостоверьтесь, что значения отключены и сообщаются 0 на вашем рабочем сервере:)
Ответ 3
Следующие настройки среды заставят PHP отображать ошибки по мере их возникновения:
- ОБЛАСТЬ ПРИМЕНЕНИЯ
определить ("ОКРУЖАЮЩАЯ СРЕДА", "Развитие");
/*
ОТЧЕТ ОБ ОШИБКАХ
если (определено ("ОКРУЖАЮЩАЯ СРЕДА"))
{ переключатель (ОКРУЖАЮЩАЯ СРЕДА) { кейс "разработка": // Сообщить обо всех ошибках error_reporting (E_ALL);
// Display errors in output
ini_set('display_errors', 1);
break;
case 'testing':
case 'production':
// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);
// Don't display errors (they can still be logged)
ini_set('display_errors', 0);
break;
default:
exit('The application environment is not set correctly.');
}
}
Ответ 4
Я не уверен, в чем была настоящая причина, но у меня была установка PHP с оставленным файлом php.ini. Позже я установил полный пакет WAMP со своим собственным PHP. Когда я удалил оставшийся файл php.ini из предыдущей установки, он начал работать так, как должен. Кажется, что двоичные файлы PHP в новой установке использовались с использованием левого php.ini, который был в совершенно другом каталоге; возможно, потому, что этот каталог находился в среде PATH.