使用(shell)脚本替换由于php 7导致的一行代码

时间:2016-05-17 02:21:13

标签: php apache sh centos6 php-7

因此,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 

有没有办法可以安全编写脚本?

1 个答案:

答案 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命令。

您还可以维护分叉插件并从此插件进行安装。

但最好的是上游维护者自己修改。