2

我正在创建自己的框架作为学习过程。有一个配置文件,人们可以在其中设置框架是否处于开发模式。

<?PHP
$project[security][dev_mode] = true;
?>

Display_startup_errors 在 .htaccess 中定义,以指示是否应显示语法错误。如果用户不需要弄乱 .htaccess 文件,我希望它可以“调整”到配置文件中的设置。任何人都知道是否以及如何以某种方式让 .htaccess 检查 php 文件的内容并采取相应措施?

也欢迎以 .htaccess 以外的其他方式设置 display_startup_errors 的解决方案;-)。

提前谢谢了!

4

2 回答 2

1

尝试

<?php
$iDevMode = ( $project['security']['dev_mode'] ) ? 1 : 0;

ini_set('display_errors', $iDevMode);
?>

根据定义进行切换。这是一个丑陋的三元运算(您可以将其转换为if语句进行练习),并且需要在程序的早期处理。

另请注意,PHP 会抛出一个通知,因为我没有将关联数组引用封装在引号中,就像我在上面所说的那样。

于 2013-03-27T00:58:20.873 回答
1

使用 .htaccess 处理错误的另一种方法是创建一个可配置的 php 文件,该文件可以像其他框架一样在开发、生产和测试阶段进行设置。

 * You can load different configurations depending on your
 * current environment. Setting the environment also influences
 * things like logging and error reporting.
 *
 * This can be set to anything, but default usage is:
 *
 *     development
 *     testing
 *     production
 *
 * NOTE: If you change these, also change the error_reporting() code below
 *
 */
    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.');
    }
}

或者手动尝试使用 ini_set() 将错误处理的配置正确设置为 on

// change settings for error handler to show errors
// $this setup is used for checking errors for development to be shown.... 
ini_set('display_errors', 1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);
于 2013-03-27T01:07:34.790 回答