Yii2 - 捕获需要错误

Yii2 - Catch require error

我有一个使用基本应用程序模板创建的 Yii2 应用程序。在 web.php 中,我需要一个名为 params.php 的文件。为了管理它,我使用文件存在函数:

if(file_exists(__DIR__ . '/params.php')) {
        $params = require __DIR__ . '/params.php';
    } 

我想抛出异常以便显示 Yii 错误/调试页面。我试过:

if(file_exists(__DIR__ . '/params.php')) {
        $params = require __DIR__ . '/params.php';
    } else {
        throw new Exception("Error", 1000);
    }

但是Yii2 Error handler并没有捕捉到它,我不确定此时是否已经可用。有没有其他方法可以在这些页面上显示它?

错误处理程序已在应用程序初始化时注册。来自 web.php 的配置在应用程序初始化之前加载(因为您需要先获取配置以初始化应用程序),因此此时错误处理程序尚未准备就绪。

您可以使用事件推迟加载参数:

return [
    'on beforeRequest' => function () {
        if (file_exists(__DIR__ . '/params.php')) {
            Yii::$app->params = require __DIR__ . '/params.php';
        } else {
            throw new Exception('Error', 1000);
        }
    }
    // rest of app config
];