因此,PHP 7.0出现了一些问题。最值得注意的是,w3全局缓存现在导致错误,即发送我的httpd错误日志。
Tue May 17 04:11:50.865647 2016] [proxy_fcgi:error] [pid 2554:tid 139695893694208] [client 195.154.181.168:59106] AH01071: Got error 'PHP message: PHP Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in /home/x/domains/x/public_html/wp-includes/functions.php on line 3464\n', referer: http://www.googlebot.com/bot.html
修复很容易https://github.com/gadelkareem/wp-w3-total-cache/commit/e71030e89f4cd666742ae2ec39451782beb42f3a,但我必须为大约12个网站执行此操作。并且可能在插件更新时再次出现。
文件始终在这里(*是可变的用户和域相关文件夹):
/home/*/domains/*/public_html/wp-content/plugins/w3-total-cache/lib/W3/Plugin/TotalCache.php
有没有办法可以安全编写脚本?
答案 0 :(得分:1)
在github上,用户pratham2003使用same problem as you and propose以下sed命令来应用补丁:
sed -i.bak 's/function ob_callback(&/function ob_callback(/g' /path/to/public_html/wp-content/plugins/w3-total-cache/lib/W3/Plugin/TotalCache.php
可以跳过-i.bak
选项以防止创建备份文件。
然后,您可以在本地应用修补程序,并编写一个脚本来更新每个服务器上的文件或每个服务器上的ssh,并在每个服务器上应用sed命令。
您还可以维护分叉插件并从此插件进行安装。
但最好的是上游维护者自己修改。