WordPress更新主题引发PHP版本小错误

手贱更新了下WordPress以及主题,刚更新完,报了一个错误,导致主页无法打开

Parse error: syntax error, unexpected '[' in /data/home/hxu0420318/htdocs/wp-content/themes/simple-bootstrap/functions.php on line 21

这种PHP级别的错误应该还是很简单的,错误在刚更新的simple-bootstrap主题里的functions.php里,不知道是否又是PHP版本导致的,因为错误原因居然是一个中括号导致,具体原因就看代码吧

首先,FTP到我的云主机找到functions.php

如果是用MAC的话,不需要任何FTP工具,Finder,前往,连接服务器,输入用户,主机,密码即可,十分方便,但是要注意只能下载无法上传,也就是假如需要修改更新文件,还是需要相关工具

functions.php

add_theme_support('custom-header', [
        'flex-width' => true,
        'width' => 1366,
        'flex-height' => true,
        'height' => 350,
        'header-text' => true,
        'default-text-color' => 'ffffff',
    ]);

错误就在add_theme_support的第二个参数,看上去是一个array,但是直接通过中括号表示,印象中PHP的数组是通过array关键字来定义的,做一个简单的测试

$numList = [
    "one"   =>   "1",
    "two"   =>   "2",
    "three" =>   "3",
];
    echo $numList['two'];
?>

结果的确能够正常输出2,说明这种用法应该是没有啥问题,顺便看下版本

php -v
PHP 5.6.28 (cli) (built: Dec  6 2016 12:38:54)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

问题可能就是这种用法PHP高版本出来的用法,我云主机里5.3旧版本无法执行,带着问题搜索了一下

官方有显示,5.4版本开始有了这种用法

PHP 5.4.0 提供了丰富的新特性:

新增支持 traits 。
新增短数组语法,比如 $a = [1, 2, 3, 4]; 或 $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。
新增支持对函数返回数组的成员访问解析,例如 foo()[0] 。
现在 闭包 支持 $this 。
现在不管是否设置 short_open_tag php.ini 选项,bar() 。
现在支持 Class::{expr}() 语法。
新增二进制直接量,例如:0b001001101 。
改进解析错误信息和不兼容参数的警告。
SESSION 扩展现在能追踪文件的 上传进度 。
内置用于开发的 CLI 模式的 web server 。

于是,这里有两种改法:

1:将云主机里PHP的版本修改成5.4版本以上应该就行了

2:修改function.php使得低版本无误

这里就不修改PHP版本了,而是直接修改php脚本,避免对其它地方造成影响

add_theme_support('custom-header', array(
        'flex-width' => true,
        'width' => 1366,
        'flex-height' => true,
        'height' => 350,
        'header-text' => true,
        'default-text-color' => 'ffffff',
    ));

这样,应该就可以了

但是想同步到云主机上,MAC的话可以下载一个FileZilla

https://filezilla-project.org/download.php?platform=osx

安装好之后,输入相关信息,将修改后的php脚本上传覆盖即可

最终这样修改无误,否则,你也不会看到这篇^_^

发表回复