我正在使用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 操作系统
-
打开你的 php.ini。 搜索并取消注释此行 -
extension=php_mysql.dll
(另请检查 PHP 指令是否指向您的扩展所在的位置。
我的是extension_dir = "C:'php-5.4.8-Win32-VC9-x86'ext"
( -
重新启动 Apache 并刷新您的页面
前我遇到了同样的问题。我的开发环境是Win8,网站运行良好,但是当我将文件上传到生产服务器(Linux(时显示空白页。
事实证明,模型和控制器的文件名应以大写字母开头。
在Windows环境中,该文件必须称为"博客.php,大写字母为"B"。
类名必须以大写字母开头。
这无关紧要,因为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;
}
通过删除if
和return
以及不正确的评论,我能够收到错误消息,而不仅仅是空白页。这个项目没有使用最新版本的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
错误文件夹是否在应用程序文件夹中就我而言,我替换了应用程序文件夹中的错误文件夹