从PHP 7.0切换到7.2后的未定义常量

时间:2018-05-16 23:15:24

标签: php wordpress

我的网站托管商很快就会将所有帐户从PHP 7.0切换到PHP 7.2。所以我安装了当前WordPress安装的克隆,以便用PHP 7.2进行测试。当我激活PHP 7.0时,一切正常。但是,当我切换到PHP 7.2时,我从其中一个插件中收到了一个奇怪的错误消息。

Warning: Use of undefined constant TABBER_TABS_DIR - assumed 'TABBER_TABS_DIR' (this will throw an Error in a future version of PHP) in /home/xeccbike/public_html/testing/wp-content/plugins/tabber-tabs-widget/tabber-tabs.php on line 31

30: / Set constant path to the plugin directory.
31: define( TABBER_TABS_DIR, plugins_url('tabber-tabs-widget/'));
32: 
33: // Load Language
34: load_plugin_textdomain('tabber-tabs-widget', false, TABBER_TABS_DIR . 'language');

有谁知道那可能是什么?任何提示都表示赞赏。感谢

AJ

2 个答案:

答案 0 :(得分:3)

我也有。我只是将常量放在单引号中,如警告信息所示(在你的情况下,第31行将是define( 'TABBER_TABS_DIR', plugins_url('tabber-tabs-widget/'));),这解决了它。

答案 1 :(得分:0)

让我们看看这段代码:

hash = {}
hash["other_hash"] = {}
hash["other_hash"]["value"] = 5

显然你可以在这里看到不带引号的字符串测试。在PHP 7.1中,脚本的输出将是:

$string = test;

if ($string == 'test') {

    echo "This is test string";

}

但在PHP 7.2中输出为:

Notice: Use of undefined constant test - assumed 'test' in ...
This is test string

如您所见,这不是一个很大的改变(通知已更改为警告),但在PHP 8中,它可能会导致错误。

这种变化的主要原因并不是停止对不带引号的字符串的支持,而是为了避免在输入某些PHP关键字时出现严重问题。

我建议我建议阅读this article。也许有用