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

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

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

Ответы [ 24 ]

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

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

php_flag display_errors On

и установите

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

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

2 голосов
/ 23 апреля 2014

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

0 голосов
/ 29 января 2019

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

0 голосов
/ 02 октября 2018

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

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

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

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

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

0 голосов
/ 02 октября 2018

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

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

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

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

0 голосов
/ 03 апреля 2017

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

$this->db->where('Type' => 'Blog'); rather than $this->db->where('Type', 'Blog');
0 голосов
/ 09 сентября 2016

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

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

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

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

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

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

0 голосов
/ 07 декабря 2015

Если у вас есть это в вашем 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 вашего веб-сервера, произнесите fastcgi_params Nginx:

fastcgi_param  SERVER_ENV         production;

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

error_reporting(0);
0 голосов
/ 21 марта 2015

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

0 голосов
/ 27 июня 2014

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

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

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

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

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

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

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