blog
blog copied to clipboard
[php网站提示错误]Warning: Call-time pass-by-reference has been deprecated
最近公司网站突然访问不了,直接就显示 Warning: Call-time pass-by-reference has been deprecated
错误信息了,网上查了下,原来是 php 版本和语法兼容性的问题,解决办法总结如下:
- 第一种方法、 把
php.ini
的display_errors = On
改成display_errors = Off
(不显示错误) - 第二种方法、
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
就可以了。