手贱更新了下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脚本上传覆盖即可
最终这样修改无误,否则,你也不会看到这篇^_^