代码点火器显示空白页而不是错误消息


Codeigniter displays a blank page instead of error messages

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

我的环境是带有Apache的Ubuntu。

由于到目前为止似乎没有一个解决方案对您有用,请尝试以下解决方案:

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

确保安装了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 解析器不会完全解析代码并且不显示任何内容,因此上述所有建议仅在您遇到语法错误以外的其他错误时才有效。

你可以在主索引中设置它.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.');
}
}

每当我在自动加载中自动加载东西时.php就会发生这种情况,例如"数据库">

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

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

    (另请检查 PHP 指令是否指向您的扩展所在的位置。
    我的是extension_dir = "C:'php-5.4.8-Win32-VC9-x86'ext"(

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

几天

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

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

该文件必须称为"博客.php,大写字母为"B"。

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

在Windows环境中,

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

希望我有所帮助。

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

error_reporting(E_ALL);

确保根文件夹中没有空白的索引.html文件。它发生在:)

检查服务器是否error_reporting打开,如果该ID关闭,则不会收到任何错误,只是空白页。 如果您在共享服务器上,则可以通过 HTaccess 启用错误报告。在代码点火器中添加以下内容

php_flag display_errors On

并设置

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

希望它能为你工作

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

如果您使用的是 CI 2.0 或更高版本,则可以将index.php中的ENVIRONMENT类型更改为 define('ENVIRONMENT', 'testing');
或者,您可以将php_flag display_errors on添加到.htaccess文件中。

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

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

> 在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,希望他们现在已经修复了这个错误。

创建函数时加载 URL 帮助程序例如,

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

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

您是否在任何地方使用 @ 符号?

如果您有类似以下内容:

@include('page_with_error.php');

你会得到一个空白页。

我遇到了这个问题,因为我有一个通过 cron 作为 root 用户运行的 CLI,从而使用 root:root 创建日志文件。当您尝试导航到 URI 时,一切正常,但 CI 显示空白页可能是因为它没有对日志文件的写入权限。

Codeigniter 在我引用不存在的视图时似乎没有抛出错误消息。

在我的示例中,我在控制器中具有:

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

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

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

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

我也面临着同样的问题,并尝试了几乎所有的事情,但最后我重新启动了我的服务器,我发现一切都开始正常工作。我不知道怎么做.....我认为这是一些服务器端问题,这就是为什么我的 PHP 代码没有给出任何错误的原因。

如果你的php中有这个.ini:

display_error = On;

并且您同时在 CI 应用程序中拥有它

error_reporting(0);

您将获得HTTP/1.1 200 OK和一个完整的银行页面。

这是因为当display_error打开时,php-fpm 总是返回 HTTP 代码 200。并且 error_reporting(0( 禁止输出的所有错误。

对于CI应用程序,入口索引.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.');
    }
}

简而言之,当你在网络服务器的 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;
} 

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

通常,

当编码点火器不显示任何内容时,会出现语法错误。大多数情况下,如果应用程序以前无缝运行,只需查看您最近的编辑即可。对我来说,这次的体验是整个应用程序,而不仅仅是一个页面。因此,我对我最近所做的编辑进行了快速的脑部扫描,并向后工作,查看了我今天处理的每个文件。原来是两个模型文件中的一些"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(检查数据库中的数据库连接.php应用程序文件夹中的文件2(检查配置.php文件检查URL是否正确?3( 默认情况下,短标签在新安装中处于关闭状态,然后按照以下步骤操作

在 php 中.ini文件将 "short_open_tag=Off" 更改为 "short_open_tag=On">

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

希望这有帮助。

就我而言,发生错误是因为我的 Apache 服务器配置为按Fast CGI运行PHP,我将其更改为 FPM 并且它起作用了。

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

$db['default']['dbdriver'] = 'mysqli'; (确保你使用的是MySQLLI,而不是MySQL(。 (数据库.php(

如果您在控制台中得到 net::ERR_CONTENT_DECODING_FAILED,那么您在 .htaccess 文件中使用 gzip,但 gzip 编码为 Off。

php.ini中启用zlib.output_compression=On并重新启动 Apache

请检查任一

错误文件夹是否在应用程序文件夹中就我而言,我替换了应用程序文件夹中的错误文件夹