Codeigniter显示空白页而不是错误消息

2020/12/01 00:22 · php ·  · 0评论

我正在使用Codeigniter,而不是错误消息,我只是得到一个空白页。有什么方法可以显示PHP错误消息吗?当我没有反馈时很难调试。

我的环境是带有Apache的Ubuntu。

由于到目前为止,没有一种解决方案对您有用,因此请尝试以下一种方法:

ini_set('display_errors', 1);

http://www.php.net/manual/zh-CN/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.');
    }
}

确保php5-mysql已安装。

我遇到了同样的问题,正如Shayan Husaini指出的那样,我遇到了无法检测到的语法错误。

我在终端中使用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]'

那应该显示带有解析错误的文件以及错误所在的行。

当您的代码中有基本的php语法错误时,会发生此行为。如果您遇到语法错误,则php解析器不会完全解析代码并且不显示任何内容,因此上述所有建议仅在您出现语法错误时才有效。

您可以在主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.');
}
}

每当我在autoload.php中自动加载内容(例如“数据库”)时,都会发生这种情况

若要解决此问题,如果您使用的是Windows操作系统

  1. 打开您的php.ini。搜索并取消注释该行-extension=php_mysql.dll

    (还请检查PHP指令是否指向您的扩展程序所在的位置

    。Mine是
    extension_dir = "C:\php-5.4.8-Win32-VC9-x86\ext"

  2. 重新启动Apache并刷新页面

几天前我遇到了同样的问题。我的开发环境是Win8,并且网站运行正常,但是当我将文件上传到生产服务器(Linux)时显示空白页。

事实证明,模型和控制器的文件名应以大写字母开头

该文件必须名为“ Blog.php”,大写字母“ B”。

类名必须以大写字母开头。

在Windows环境中,这无关紧要,因为Windows不会区分大写和小写,但是在Linux环境中,将不会显示文件。

希望我有所帮助。

尝试将其添加到index.php文件中

error_reporting(E_ALL);

确保您的根文件夹中没有空白的index.html文件。它发生了:)

检查error_reporting是否在服务器上打开,如果关闭该ID,您将不会得到任何错误并且只是空白页。如果您在共享服务器上,则可以通过htaccess启用错误报告。在codeIgniter中在您的htaccess中添加以下内容

php_flag display_errors On

并设置

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

希望它对你有用

首先,您需要授予您的Codeigniter文件夹权限,这可能是权限问题,然后启动服务器。

如果您使用的是CI 2.0或更高版本,则可以将ENVIRONMENT类型更改index.phpdefine('ENVIRONMENT', 'testing');

或者,您可以添加
php_flag display_errors on.htaccess文件中。

system/core/Common.php其中有一个异常处理程序,其代码块如下所示:

 // We don't bother with "strict" notices since they tend to fill up
 // the log file with excess information that isn't normally very helpful.
if ($severity == E_STRICT)
{
    return;
}

通过删除ifreturn和错误的注释,我得到了一条错误消息,而不仅仅是空白页。该项目未使用最新版本的CodeIgniter,希望他们现在已修复此错误。

创建功能时加载网址帮助器,例如,

visibility function_name () {

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

它将显示错误或您加载的视图。

您在任何地方都使用@符号吗?

如果您有类似的东西:

@include('page_with_error.php');

您将获得一个空白页。

我之所以遇到这个问题,是因为我有一个CLI以root用户身份通过​​cron运行,因此使用root:root创建日志文件。当您尝试导航到URI时,所有内容都可以正常运行,但CI可能显示空白页,这可能是因为该空白页对日志文件没有写权限。

当我引用一个不存在的视图时,Codeigniter似乎没有引发错误消息。

在我的示例中,我在控制器内:

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

因为该文件不存在,所以我得到了一个空白的“页面发生错误”。我将代码更改为:

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

这就是我解决您似乎遇到的相同问题的方式,希望这有一天能对某人有所帮助。

我也面临着同样的问题,并尝试了几乎所有方法,但最终我重新启动了服务器,发现一切都开始正常运行。 PHP CODE没有给出任何错误。

如果您的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.');
    }
}

简而言之,当您在Web服务器的conf中设置ENV指令时,请说一下Nginx的fastcgi_params:

fastcgi_param  SERVER_ENV         production;

然后CI将自动设置

error_reporting(0);

另一种方法是查看是否意外地超过了代码中的错误检查。在所有代码中搜索error_reporting()的任何实例。如果不带参数调用它,它将仅返回当前级别,并且是无害的。如果使用参数(例如0(零))进行调用,它将关闭错误报告。

您可以在CodeIgnitor中对此进行测试,方法是在../system/core/Common.php下查看其核心库,然后找到位于大约615行的部分,如下所示:

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

添加类似:

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

并且您应该能够捕获超出的错误,并从那里进行调试。

通常,当codeigniter不显示任何内容时,就会出现语法错误。通常,如果应用程序以前无缝运行,则只需看看您最近的编辑即可。对我而言,这次的体验是整个应用程序,而不仅仅是页面。因此,我快速进行了脑部扫描,以查看我最近做过的最新编辑并向后工作,并查看了我今天所处理的每个文件。原来是两个模型文件中的一些“ where”子句:例如,我有

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

经过研究和浪费时间,我发现了同样的问题,我安装了最新的xamp版本并发现我的网站无法正常工作。

我需要在php.ini文件中打开以下标记short_open_tag = On

确保执行此操作后重新启动apache。

希望这会有所帮助,如果您的站点已经像其他人一样面临着类似的问题,那么这些问题中的大多数与php.ini文件或全新安装有关。

安装xamp / wamp之后,您可能会发现几乎没有类似性质的错误。如果您的网站已经在运行,请不要担心,这是与配置有关的问题。

1)检查应用程序文件夹内的database.php文件中的数据库连接2)检查config.php文件检查URL是否正确?3)默认情况下,短标签在新安装中处于关闭状态,然后按照以下步骤操作

在php.ini文件中,将“ short_open_tag = Off”更改为“ short_open_tag = On”

确保执行此操作后重新启动apache。

希望这可以帮助。

错误,对我来说,正在发生,因为我的Apache服务器被配置为运行PHPFast CGI,我把它改成FPM和它的工作。

只适合仍在寻找答案的人:

$ db ['default'] ['dbdriver'] ='mysqli'; (确保使用mysqli,而不是mysql)。(database.php)

index.php文件中添加以下行:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

请检查错误文件夹是否位于应用程序文件夹中(不是我的情况)我替换了应用程序文件夹中的错误文件夹

本文地址:http://php.askforanswer.com/codeigniterxianshikongbaiyeerbushicuowuxiaoxi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!