用(shell)脚本替换PHP7中的一行代码

用(shell)脚本替换PHP7中的一行代码,php,apache,sh,centos6,php-7,Php,Apache,Sh,Centos6,Php 7,因此,PHP7.0带来了一些问题。最值得注意的是,w3 totalcaching现在正在导致一个错误,即垃圾邮件发送我的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_P

因此,PHP7.0带来了一些问题。最值得注意的是,w3 totalcaching现在正在导致一个错误,即垃圾邮件发送我的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
修复相当简单,但我必须为大约12个站点执行此操作。当插件更新时,可能会再次出现

文件始终位于此处(*为变量用户和域相关文件夹):


有什么方法可以安全地编写脚本吗?

在github上,用户pratham2003有以下命令来应用补丁程序:

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命令

您还可以维护一个分叉插件并从此插件安装


但最好是上游维护人员自己进行修改。

“sed是一个流编辑器。流编辑器用于对输入流(文件或管道输入)执行基本的文本转换。但在某些方面类似于允许脚本编辑的编辑器(如ed),sed的工作原理是只对输入进行一次传递,因此效率更高。但sed在管道中过滤文本的能力使其与其他类型的编辑器特别不同。“对不起,我不熟悉sed。这是我必须在我的服务器上永久运行的东西,还是一次一次运行的解决方案?
sed
是一种命令行工具,可用于类似unix的系统,如linux、Mac OS X等,。。。如果在本地应用修改,则需要在本地计算机上安装sed。如果要直接在服务器上应用修改,则需要在所有服务器上安装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