我正在使用Codeigniter,而不是错误消息,我只是得到一个空白页面。有没有办法显示PHP错误消息?当我得不到任何反馈时,很难调试。
我的环境是使用Apache的Ubuntu。
答案 0 :(得分:90)
由于到目前为止没有一个解决方案似乎适合你,试试这个:
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.');
}
}
答案 1 :(得分:29)
确保已安装php5-mysql
。
答案 2 :(得分:8)
我有同样的问题,正如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]'
这应该显示具有解析错误的文件和错误所在的行。
答案 3 :(得分:7)
当您的代码中有基本的PHP语法错误时,会发生此行为。如果你有语法错误,php解析器不完全解析代码并且没有显示任何内容,所以只有当你有语法错误以外时,所有上述建议才会起作用。
答案 4 :(得分:6)
你可以在主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 :(得分:5)
每当我在autoload.php中自动加载内容时,就会发生这种情况,例如'数据库'
要解决此问题,请执行以下操作
打开你的php.ini。
搜索并取消注释此行 - extension=php_mysql.dll
(另请检查PHP指令是否指向您的扩展程序所在的位置
我的是extension_dir = "C:\php-5.4.8-Win32-VC9-x86\ext"
)
重启Apache并刷新页面
答案 6 :(得分:4)
几天前我遇到了同样的问题。我的开发环境是Win8,网站运行得很好,但是当我将文件上传到生产服务器(Linux)时显示空白页面。
原来models and controllers's filenames should start with a uppercase letter。
该文件必须名为'Blog.php',大写'B'。
类名必须以大写字母开头。
在Windows环境中,这与windows does not differentiate uppercase and lowercase无关,但在linux环境中,文件不会显示。
希望我帮助过。
答案 7 :(得分:3)
尝试将此添加到index.php文件
error_reporting(E_ALL);
答案 8 :(得分:3)
确保根文件夹中没有空白的index.html文件。它发生了:))
答案 9 :(得分:2)
如果您使用的是CI 2.0或更新版本,则可以将ENVIRONMENT
中的index.php
更改为define('ENVIRONMENT', 'testing');
。
或者,您可以将php_flag display_errors on
添加到.htaccess
文件中。
答案 10 :(得分:2)
检查服务器上的error_reporting是否为ON,如果该id为off,则不会出现任何错误,只会出现空白页。如果您在共享服务器上,则可以通过htaccess启用错误报告。在codeIgniter中,在htaccess中添加以下内容
php_flag display_errors On
并设置
error_reporting(E_ERROR); ## or what ever setting desired in php
希望它适合你
答案 11 :(得分:2)
首先,您需要授予Codeigniter文件夹的权限,这可能是权限问题,然后启动您的服务器。
答案 12 :(得分:1)
在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;
}
通过删除if
和return
以及不正确的注释,我得到了一条错误消息,而不仅仅是空白页。该项目未使用最新版本的CodeIgniter,希望他们现在已修复了该错误。
答案 13 :(得分:0)
通常,当codeigniter不显示任何内容时,会出现语法错误。大多数情况下,如果应用程序之前无缝运行,请查看最近的编辑内容。对我来说,这次的体验是整个应用程序,而不仅仅是一个页面。所以我对我做过的最新编辑进行了快速脑部扫描,然后回顾了我今天工作的每个文件。原来是两个模型文件中的'where'子句:例如,我有
$this->db->where('Type' => 'Blog'); rather than $this->db->where('Type', 'Blog');
答案 14 :(得分:0)
如果您在控制台中看到 net::ERR_CONTENT_DECODING_FAILED,那么您在 .htaccess 文件中使用了 gzip,但 gzip 编码处于关闭状态。
在 zlib.output_compression=On
中启用 php.ini
并重新启动 Apache
答案 15 :(得分:0)
我遇到了同样的问题,在研究和浪费时间后,我发现最新的xamp版本安装了,发现我的网站无法正常工作。
我需要打开php.ini文件short_open_tag = On
中的以下标记执行此操作后,请确保重新启动apache。
希望这会有所帮助,如果您的网站已经像其他人一样面临着类似的问题,那么大多数问题都与php.ini文件或全新安装有关。
答案 16 :(得分:0)
在安装xamp / wamp之后,您可能会注意到几乎没有类似性质的错误。如果您的网站已经在运行,请不要担心,这是与配置有关的问题。
1)检查应用程序文件夹内的database.php文件中的数据库连接 2)检查config.php文件中检查URL是否正确? 3)默认情况下,短标签在新安装中处于关闭状态,然后按照以下步骤操作
在php.ini文件中,将“ short_open_tag = Off”更改为“ short_open_tag = On”
执行此操作后,请确保重新启动apache。
希望这会有所帮助。
答案 17 :(得分:0)
就我而言,发生此错误是因为将我的Apache服务器配置为以PHP
的身份运行Fast CGI
,我将其更改为FPM
并可以正常工作。
答案 18 :(得分:0)
仅适用于仍在寻找答案的任何人:
$ db ['default'] ['dbdriver'] ='mysqli'; (确保使用mysqli,而不是mysql)。 (database.php)
答案 19 :(得分:0)
在您的index.php
文件中,添加以下行:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
答案 20 :(得分: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;
}
并且您应该能够捕获超出的错误,并从那里进行调试。
答案 21 :(得分:0)
如果你的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.');
}
}
简而言之,当您在网络服务器的conf中设置ENV指令时,请说Nginx的fastcgi_params:
fastcgi_param SERVER_ENV production;
然后CI将自动设置
error_reporting(0);
答案 22 :(得分:0)
答案 23 :(得分:0)
当我引用一个不存在的视图时,Codeigniter似乎没有抛出错误消息。
在我的例子中,我在我的控制器中:
$this->load->view('/admin/index/access_controls/groups/add');
因为文件不存在,我得到一个空白的“发生错误页面”。我将代码更改为:
$this->load->view('/admin/access_controls/groups/add');
这就是我解决你似乎遇到的同样问题的方法,希望有一天能帮助某人。
答案 24 :(得分:0)
我碰到了这个,因为我有一个通过cron作为root用户运行的CLI,从而创建了root:root的日志文件。当您尝试导航到URI时,一切都会正常工作,但CI显示空白页可能是因为它没有对日志文件的写入权限。
答案 25 :(得分:0)
你在任何地方使用@符号吗?
如果你有类似的话:
@include('page_with_error.php');
您将获得一个空白页面。
答案 26 :(得分:0)
在创建函数时加载url帮助器 例如,
visibility function_name () {
$this->load->helper('url');
}
它会显示错误或您加载的视图。
答案 27 :(得分:-1)
请检查错误文件夹是否在应用程序文件夹中 在我的情况下,我替换应用程序文件夹中的错误文件夹