Codeigniter 3 在生产模式下显示错误

Codeigniter 3 shows errors in production mode

提问人:rostamiani 提问时间:9/5/2019 最后编辑:rostamiani 更新时间:9/18/2019 访问量:2222

问:

我在生产模式下使用 Codeigniter 3,但显示错误。我的 Web 服务器是 Wampserver 3.1.7,默认php.ini。如何禁用错误报告?

这是我index.php的一部分:

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


    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(-1);
            ini_set('display_errors', 1);
        break;

        case 'testing':
        case 'production':
            ini_set('display_errors', 0);
            if (version_compare(PHP_VERSION, '5.3', '>='))
            {
                error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
            }
            else
            {
                error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);
            }
        break;

        default:
            header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
            echo 'The application environment is not set correctly.';
            exit(1); // EXIT_ERROR
    }

这是我错误的一部分:

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>An uncaught Exception was encountered</h4>

<p>Type: Error</p>
<p>Message: Call to a member function result() on bool</p>
<p>Filename: D:\Projects\Nafis Global System\Server\application\core\MY_Model.php</p>
<p>Line Number: 377</p>


    <p>Backtrace:</p>

更新:

仅显示一些错误。例如,如果未建立Mysqli连接,则会显示以下错误:

消息:调用成员函数 real_escape_string() on bool

codeigniter-3 错误报告 php-7.3

评论

1赞 Vinay Patil 9/5/2019
你如何设置环境?当你在index.php时,你会得到什么?productionecho ENVIRONMENT
0赞 rostamiani 9/5/2019
我在代码中添加了定义行
0赞 Vinay Patil 9/5/2019
你检查过价值吗?它应该是生产。echo ENVIRONMENT
0赞 rostamiani 9/18/2019
@VinayPatil 这是MY_Controller.php中的“生产”

答:

2赞 DFriend 9/6/2019 #1

最常见的设置位置是使用 SetEnv 指令,例如CI_ENV.htaccess

SetEnv CI_ENV production

通常的做法是将不同的 .htaccess 用于开发服务器和 Live Server。在开发箱上使用

SetEnv CI_ENV development

以上内容涉及Apache服务器,这些服务器也必须启用才能工作。env_moduleSetEnv

NGINX 或其他 Web 服务器使用不同的机制来设置变量。

还应该调整生产环境的数据库配置。特别是项目 .在那里分配的值也可以使用变量动态设置,例如在 application/config/database.php'db_debugENVIRONMENT

$db['default'] = array(
    //bunch of items,
    'db_debug' => ENVIRONMENT == 'development' ? true : false,
    //more items
);