Подтвердить что ты не робот

Codeigniter отображает пустую страницу вместо сообщений об ошибках

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

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

4b9b3361

Ответ 1

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

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.');
    }
}

Ответ 2

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

Ответ 3

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

Я решил это, используя php linter в терминале:

php -l file.php

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

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

И для фильтрации только тех, у кого есть ошибки:

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

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

Ответ 4

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

Ответ 5

вы можете установить его в главном 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.');
}
}

Ответ 6

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

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

  • Откройте php.ini. Поиск и раскомментирование этой строки - extension=php_mysql.dll

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

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

Ответ 7

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

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

Файл должен быть назван "Blog.php" с капиталом "B".

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

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

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

Ответ 8

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

error_reporting(E_ALL);

Ответ 9

Убедитесь, что у вас нет пустого файла index.html в корневой папке. Это происходит:)

Ответ 10

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

Ответ 11

проверить, является ли error_reporting включенным на сервере или нет, если этот id отключен, вы не получите никаких ошибок и просто пустую страницу. если вы находитесь на общем сервере, вы можете включить отчет об ошибках через htaccess. В CodeIgniter добавьте следующее в htaccess

php_flag display_errors On

и установите

error_reporting(E_ERROR); ## or what ever setting desired in php

надеюсь, что это сработает для вас.

Ответ 12

Прежде всего вам нужно предоставить разрешение вашей папки Codeigniter, это может быть проблема с разрешением, а затем запустить ваш сервер.

Ответ 13

загрузите ваш помощник URL-адреса при создании функции например,

visibility function_name () {

     $this->load->helper('url');
}

он покажет вам ошибки или загруженное представление.

Ответ 14

Используете ли вы символ @в любом месте?

Если у вас есть что-то вроде:

@include('page_with_error.php');

Вы получите пустую страницу.

Ответ 15

Я столкнулся с этим, потому что у меня был CLI, запущенный через cron в качестве пользователя root, создав таким образом файлы журналов с помощью root: root. Когда вы пытались перейти к URI, все было бы нормально, но CI показывал пустую страницу, вероятно, потому, что у нее не было разрешения на запись в файл журнала.

Ответ 16

Codeigniter, похоже, не выдает сообщение об ошибке, когда я ссылался на представление, которого не было.

В моем примере у меня был мой контроллер:

$this->load->view('/admin/index/access_controls/groups/add');

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

$this->load->view('/admin/access_controls/groups/add');

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

Ответ 17

i также столкнулась с одной и той же проблемой и попробовала почти все, но, наконец, я перезапустил свой сервер, и я обнаружил, что все началось нормально. Я не знаю, как..... я думаю, что это была проблема на стороне сервера почему мой PHP-код не выдавал никаких ошибок.

Ответ 18

Если у вас есть это в вашем php.ini:

display_error = On;

и вы имеете это в своем приложении CI одновременно

error_reporting(0);

вы получите HTTP/1.1 200 OK и полностью банковскую страницу.

Это потому, что когда display_error включен, php-fpm всегда возвращает HTTP-код 200. И все ошибки для вывода запрещены error_reporting (0).

Для приложения CI запись index.php устанавливает рабочую среду как сильфон:

if(isset($_SERVER['SERVER_ENV'])) {
    define('ENVIRONMENT', $_SERVER['SERVER_ENV']);
} else {
    define('ENVIRONMENT', 'development');
}

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
            ini_set('display_errors', 1);
        break;

        case 'testing':
        case 'production':
            error_reporting(0);
        break;

        default:
            exit('The application environment is not set correctly.');
    }
}

Короче говоря, когда вы устанавливаете директиву ENV в своем веб-сервере conf, скажите Nginx fastcgi_params:

fastcgi_param  SERVER_ENV         production;

тогда CI автоматически установит

error_reporting(0);

Ответ 19

Другой метод - проверить, случайно ли вы превысили ошибку в своем коде. Найдите весь свой код для любого экземпляра error_reporting(). Если вы вызываете его без параметров, он просто возвращает текущий уровень и безвреден. Если вы вызываете его с помощью параметра, например 0 (ноль), он отключит отчет об ошибках.

Вы можете протестировать это в CodeIgnitor, посмотрев свою основную библиотеку в разделе.. /system/core/Common.php и найдя раздел, который примерно по строке 615 выглядит следующим образом:

if (($severity & error_reporting()) !== $severity)
{
   return;
} 

Добавьте что-то вроде:

if (($severity & error_reporting()) !== $severity)
{
   echo "Suppressing errors!";
   return;
} 

и вы должны быть в состоянии ловушку для превзошедших ошибок и отлаживать оттуда.

Ответ 20

Часто, когда codeigniter ничего не отображает, возникает синтаксическая ошибка. В основном, если приложение работает без проблем ранее, просто просмотрите самые последние изменения. Для меня опыт на этот раз был всем приложением, а не только страницей. Поэтому я быстро проверил мозг на самые последние изменения, которые я сделал, и работал в обратном направлении, просматривая каждый файл, над которым я работал в этот день. Выяснилось, что некоторые предложения "where" в двух файлах модели: например, я имел

$this->db->where('Type' => 'Blog'); rather than $this->db->where('Type', 'Blog');

Ответ 21

У меня была та же проблема, я установил последнюю версию xamp и обнаружил, что мой сайт не работает, после исследований и траты времени я нашел это.

Мне нужно включить следующий тег в файле php.ini short_open_tag = On

Обязательно перезапустите apache после этого.

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

Ответ 22

после установки xamp/wamp вы можете заметить несколько ошибок подобного характера. Если ваш сайт уже запущен, не беспокойтесь, это проблема, связанная с конфигурацией.

1) проверить соединения с базой данных в файле database.php внутри папки приложения 2) проверить файл config.php проверить правильность URL-адреса или нет? 3) по умолчанию короткие ярлыки в новых установках отключены, следуйте процедуре ниже

в файле php.ini измените "short_open_tag = Off" на "short_open_tag = On"

Обязательно перезапустите apache после этого.

надеюсь это поможет.

Ответ 23

Ошибка, в моем случае, произошла из-за того, что мой сервер Apache был настроен для запуска PHP как Fast CGI, я изменил его на FPM и он работал.

Ответ 24

пожалуйста, проверьте, что папка с ошибкой находится в папке приложения не в моем случае я заменяю папку ошибок в папке приложения