首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CakePHP 4配置中读取为字符串的布尔值

在CakePHP 4配置中读取为字符串的布尔值
EN

Stack Overflow用户
提问于 2020-12-09 23:53:59
回答 1查看 121关注 0票数 0

我目前正在将我的项目从CakePHP 3更新到CakePHP 4。我遇到的一个非常恼人的问题是,存储在Configy值中的'debug'值被读取为字符串,而不是布尔值。这会直接在CakePHP的内部类中导致错误。

这是config/app.php的相关部分

代码语言:javascript
复制
<?php
return [
    /**
     * Debug Level:
     *
     * Production Mode:
     * false: No error messages, errors, or warnings shown.
     *
     * Development Mode:
     * true: Errors and warnings shown.
     */
    'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),

...

在我的.env文件中,我有以下内容:

代码语言:javascript
复制
DEBUG=true

当与filter_var一起使用时,它的计算结果是布尔值true,因此应该将其保存在我的配置数组中。

这是我得到的错误:

代码语言:javascript
复制
Argument 2 passed to Cake\Error\ErrorHandler::_displayError() must be of the type boolean, string given, called in /www-data/rebe001/hcms-sme-apps-com-cake4-cake/public/vendor/cakephp/cakephp/src/Error/BaseErrorHandler.php on line 188

我查看了BaseErrorHandler::handleError方法,它确实读取配置来查找'debug'键的值。该值是一个值为'1'的字符串。

我还在我的AppController::initialize方法中放置了该值的dd(),并且该值也是'1'

我还尝试编辑app.php配置文件,对true值进行硬编码:

代码语言:javascript
复制
<?php
return [
    /**
     * Debug Level:
     *
     * Production Mode:
     * false: No error messages, errors, or warnings shown.
     *
     * Development Mode:
     * true: Errors and warnings shown.
     */
    //'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),
    'debug' => true,

...

但结果不会改变。我仍然会得到这个错误。所以问题不在于我的.env文件,也不在于读取值的方式。我认为问题在于CakePHP的内部配置数组中的值是如何存储的,或者可能是检索它的方式。

我发现解决这个问题的唯一方法是在AppController::initialize中强制将值设置为布尔型true,但我当然希望避免这种情况。添加这一行可以解决这个问题,这样我就可以进一步进行调试,但我显然不想将其用作永久解决方案。

代码语言:javascript
复制
Configure::write('debug', true);

还有没有其他人遇到过(并且希望解决了)这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-12-10 01:48:38

正如评论中提到的,在最初从config/app.php读取配置之后,配置确实被重写了,并且为“debug”键设置了一个非布尔值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65220233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档