Codeigniter отображает пустую страницу вместо сообщений об ошибках - PullRequest
39 голосов
/ 06 марта 2012

Я использую Codeigniter, и вместо сообщений об ошибках я просто получаю пустую страницу. Есть ли способ показать сообщения об ошибках PHP вместо этого? Очень трудно отлаживать, когда я не получаю обратной связи.

Моя среда - Ubuntu с Apache.

Ответы [ 24 ]

91 голосов
/ 06 марта 2012

Поскольку пока что ни одно из решений не работает для вас, попробуйте следующее:

ini_set('display_errors', 1);

http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

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

Вот так выглядят мои настройки среды в index.php:

/*
 *---------------------------------------------------------------
 * APPLICATION ENVIRONMENT
 *---------------------------------------------------------------
 */
define('ENVIRONMENT', 'development');
/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 */
if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            // Report all errors
            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.');
    }
}
29 голосов
/ 17 февраля 2014

Убедитесь, что php5-mysql установлено.

8 голосов
/ 18 июня 2014

У меня была такая же проблема, и, как указал Шаян Хусаини, у меня была необнаруженная синтаксическая ошибка.

Я решил ее с помощью php linter в терминале:

php -l file.php

Вы можететакже используйте что-то вроде этого, чтобы использовать линтер в каждом файле в некоторой папке:

find -type f -name "*.php" -exec php -l '{}' \;

и отфильтровывать только те, которые содержат ошибки:

find -type f -name "*.php" -exec php -l '{}' \; | grep '^[^N]'

Это должно показывать файлы с ошибками синтаксического анализаи строка, где ошибка.

7 голосов
/ 06 марта 2012

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

6 голосов
/ 06 марта 2012

вы можете установить его в основной index.php

    define('ENVIRONMENT', 'development');
/*
 *---------------------------------------------------------------
 * 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);
    break;

    default:
        exit('The application environment is not set correctly.');
}
}
5 голосов
/ 17 июня 2014

Это происходит со мной всякий раз, когда я выполняю автозагрузку в autoload.php, например, «база данных»

. Чтобы решить эту проблему, если вы используете ОС Windows

  1. Откройте свой php.ini.Найдите и раскомментируйте эту строку - extension=php_mysql.dll

    (Пожалуйста, также проверьте, указывает ли директива PHP, где расположены ваши расширения.Мой extension_dir = "C:\php-5.4.8-Win32-VC9-x86\ext")

  2. Перезапустите Apache и обновите страницу

4 голосов
/ 19 февраля 2016

У меня была такая же проблема пару дней назад. Моя среда разработки - Win8, и веб-сайт работал нормально, но когда я загружал файлы на рабочий сервер (Linux), отображалась пустая страница.

Оказывается, что имена моделей и контроллеров должны начинаться с заглавной буквы .

Файл должен называться «Blog.php» с большой буквы «B».

Имена классов должны начинаться с заглавной буквы.

В среде Windows это не имеет значения, поскольку windows не различает прописные и строчные буквы , но в среде Linux, файлы не будут отображаться.

Надеюсь, я помог.

3 голосов
/ 06 марта 2012

Попробуйте добавить это в ваш файл index.php

error_reporting(E_ALL);
3 голосов
/ 27 декабря 2014

Убедитесь, что в вашей корневой папке нет пустого файла index.html.Бывает :) 1001 *

2 голосов
/ 06 марта 2012

Если вы используете CI 2.0 или новее, вы можете изменить ENVIRONMENT тип в вашем index.php на define('ENVIRONMENT', 'testing');.
В качестве альтернативы, вы можете добавить php_flag display_errors on к вашему .htaccess файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...