【问题标题】:How to configure Codeigniter to report all errors?如何配置 Codeigniter 以报告所有错误?
【发布时间】:2011-11-14 06:50:02
【问题描述】:

我在 CI 的 autoload.php 中有一行 - $autoload['libraries'] = array('database');。因此,我得到了一个空白页。当我删除 'database', 选项后,我开始获取输出。

现在我的问题不是如何配置数据库,而是如何配置 CI 说出自己的想法。当'database' 启用时,我得到的只是一个完整的空白页。 php 日志中没有错误,Apache 日志中没有错误,CI 日志中没有错误。在 PHP 中,我设置了 E_ALL。在我的 CI 配置中,我将 log_threshold 设置为 4,即应记录所有消息。我还需要做什么?

【问题讨论】:

  • 你能在你的 CI 程序中给出phpinfo() 的输出吗? trigger_error('test', E_USER_NOTICE) 带给你什么?
  • @Lars 你能告诉我你想要的 phpinfo 的确切部分吗,因为它输出了一个很长的列表,我认为不能在这里发布。顺便说一句,tigger_error 的输出是A PHP Error was encountered, Severity: User Notice, Message: test, Filename: controllers/welcome.php, Line Number: 22。这出现在浏览器窗口中。在 CI 日志中,它也被记录为 ERROR - 2011-09-10 13:49:21 --> Severity: User Notice --> test C:\....\lib\codeigniter\application\aceinvite\controllers\welcome.php 22
  • 我只是想确保错误设置是正确的(由 trigger_error 证明)。自动加载器可能不会抛出任何错误消息或异常。您仍然可以幸运地定义自己的错误处理程序,但我想这无济于事。也许其他人有一个想法(除了调试 autoload.php 之外) - 祝你好运! :)
  • 这对我有帮助,试试吧:stackoverflow.com/questions/9587413/…
  • 我找到了这个解决方案:stackoverflow.com/questions/9587413/… 它对我有用。

标签: php codeigniter php-5.3


【解决方案1】:

这取决于您的 CI 版本。对于

error_reporting(E_ALL);

对于 >= 2.x 编辑顶级 index.php 并确保 ENVIRONMENT 设置为:

define('ENVIRONMENT', 'development');

将 error_reporting 设置为 E_ALL。

【讨论】:

  • 我使用的是 >= 2.x 版本,define('ENVIRONMENT', 'development'); 已经定义在 index.php 的顶部。
  • 接受您的回答,因为您的回答简短明了,即使我的问题与此无关。你的答案是 90% 的人想要的。对于仍然面临问题的人,他们可能想看看我的答案。
【解决方案2】:

在您的 webroot 中创建一个 .htaccess 文件,其中包含以下内容

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value error_reporting -1
php_value log_errors_max_len 0

希望这应该启用您的日志。
确保在您的生产服务器上将值设置为 off 并报告给 0 :)

【讨论】:

    【解决方案3】:

    以下环境设置将强制 PHP 在发生错误时显示错误:

    • 应用环境 定义('环境','发展'); /*
    • 错误报告

      如果(定义('环境')) { 开关(环境) { 案例“发展”: // 报告所有错误 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.');
      }
      

      }

    【讨论】:

    • 我很高兴它在 Codeignitor 中对我有用,它是否适用于所有 PHP 框架,还是有任何限制使其适用于所有 PHP 框架?
    【解决方案4】:

    我不确定真正的原因是什么,但我安装了一个带有剩余 php.ini 文件的 PHP。后来我用自己的 PHP 安装了完整的 WAMP 堆栈。当我从以前的安装中删除剩余的 php.ini 文件时,它开始正常工作。似乎新安装中的 PHP 二进制文件使用的是位于完全不同目录中的剩余 php.ini;可能是因为该目录位于环境 PATH 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 2013-10-05
      • 2014-01-13
      • 2020-11-17
      • 2016-05-21
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多