blog icon indicating copy to clipboard operation
blog copied to clipboard

[php网站提示错误]Warning: Call-time pass-by-reference has been deprecated

Open diamont1001 opened this issue 4 years ago • 0 comments

最近公司网站突然访问不了,直接就显示 Warning: Call-time pass-by-reference has been deprecated 错误信息了,网上查了下,原来是 php 版本和语法兼容性的问题,解决办法总结如下:

  1. 第一种方法、 把 php.inidisplay_errors = On 改成 display_errors = Off (不显示错误)
  2. 第二种方法、allow_call_time_pass_reference = Off 变成 allow_call_time_pass_reference = On(php 5.5以上不支持了好像)

找不到 php.ini 的话,通过以下方法可以找到:

find / -name 'php.ini'

改完记得重启 PHP 确保修改成功,或者在网站根目录新建一个 test.php,内容如下:

<?php
    phpinfo();
?>

然后通过浏览器访问 /test.php 这个网页去查看相关 PHP 配置。

注意,搞定后记得删掉 test.php,不然会被用户看到你服务器信息!

以上可以解决大部分问题,但是发现某两个页面还是没解决,找了好久,还是没办法,最后通过折半查找法找出有问题的文件:

在有问题的页面对应的 php 文件中间添加以下测试代码,不段去寻找错误的代码(文件):

echo 'test';return;

最后找到一个插件文件(lib_xxx.php)里面全是加密的信息,其实就是使用了【php威盾】加密,不慌,网上有直接解密的:

通过这个网站 https://www.toolnb.com/tools/phpcarbylamine.html 可以把 lib_xxx.php 文件内容直接解密出来,然后把解密后的源码更新到 lib_xxx.php 就可以了。

diamont1001 avatar Feb 08 '21 23:02 diamont1001