使用define()的问题启用调试模式

问题描述 投票:0回答:1

if (! defined('_PS_MODE_DEV_')) { define('_PS_MODE_DEV_', $_SERVER['SERVER_NAME'] === 'staging.domain.name'); }

但是它不起作用,不启用调试模式。

当我测试我的价值时:

var_dump(! defined('_PS_MODE_DEV_')); // true if (! defined('_PS_MODE_DEV_')) { var_dump($_SERVER['SERVER_NAME'] === 'staging.domain.name'); // true define('_PS_MODE_DEV_', $_SERVER['SERVER_NAME'] === 'staging.domain.name'); } var_dump(_PS_MODE_DEV_); // true
所有的东西看起来不错,我不明白为什么调试模式静止不动。
我认为这是模式本身的问题,但是如果我这样设定:

if (! defined('_PS_MODE_DEV_')) { define('_PS_MODE_DEV_', true); }

有效,调试模式已启用...
也许有一定的限制

define()

吗? (我找不到使用表达式的示例)。

,我尝试这样的尝试:

if (! defined('_PS_MODE_DEV_')) {
    if ($_SERVER['SERVER_NAME'] === 'staging.domain.name') {
        define('_PS_MODE_DEV_', true);
    }
    else {
        define('_PS_MODE_DEV_', false);
    }
}

也有效,调试模式在登台上启用。但是,调试模式也在生产中启用!

我完全迷路了,因为如果我设定的话:

if (! defined('_PS_MODE_DEV_')) {
    if (false) {
        define('_PS_MODE_DEV_', true);
    }
    else {
        define('_PS_MODE_DEV_', false);
    }
}

启用了调试模式...我不知道这里发生了什么。对我来说,看起来PHP忽略了我的病情,并且始终为第一个Define()。

有人可以给我一些想法,以了解这里发生了什么?

	

问题似乎与Prestashop如何解释

_PS_MODE_DEV_

常数有关。当您将其设置为

true
时,调试模式可行。但是,当您尝试使用评估对true/fals的表达式,或者将其设置为明确时,会发生意外的事情。
there可能发生的事情:

Prestashop可能正在检查是否定义了常数,不一定是其值

php prestashop
1个回答
-1
投票

您的条件正常工作,但是Prestashop使用常数如何不同于预期


false
Try this solution:

如果那不起作用,还有另一种方法:Prestashop通常具有特定的配置文件,应调整调试设置。查找称为

if (!defined('_PS_MODE_DEV_')) { if ($_SERVER['SERVER_NAME'] === 'staging.domain.name') { define('_PS_MODE_DEV_', true); // For staging } else { // For production - use this specific syntax define('_PS_MODE_DEV_', false); // Also try these alternatives if the above doesn't work // define('_PS_MODE_DEV_', (bool) false); // define('_PS_MODE_DEV_', 0); } }
    或类似的文件。您可能需要直接修改它,而不是尝试重新定义其他位置的常数。
  1. 此外,检查是否有任何缓存机制。有时,Prestashop缓存了某些配置,您可能需要清除这些缓存以查看您的更改生效。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.