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可能正在检查是否定义了常数,不一定是其值
您的条件正常工作,但是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);
}
}