PHP环境配置异常:执行Ubuntu命令后PHP命令被篡改求助
解决Ubuntu中PHP命令被篡改的问题
你这是碰到了bash环境变量被意外污染的情况——那个echo php phpinfo(); > a.txt命令其实在你的shell里定义了一个名为php的函数,直接覆盖了系统原本的PHP可执行文件路径,所以执行which php才会返回那个奇怪的函数定义。
下面是具体的修复步骤:
临时恢复PHP命令:先在当前终端里执行这个命令,立即取消恶意的函数定义:
unset php执行完后再跑
which php,应该就能看到系统真实的PHP路径了(比如/usr/bin/php)。彻底清除恶意定义:这个函数大概率是被写到了你的bash启动配置文件里,不然重启终端后问题还会出现。需要检查以下几个文件:
~/.bashrc(用户个人的bash配置)~/.bash_profile/etc/bash.bashrc(系统级bash配置)/etc/profile/etc/profile.d/目录下的所有脚本文件
打开这些文件,找到包含php () {> a.txt}或者类似内容的行,直接删除掉。
验证修复效果:保存修改后的配置文件,要么重启终端,要么执行
source ~/.bashrc(如果修改的是这个文件),然后执行:which php php -v确认返回的是正常的PHP路径和版本信息,就说明问题解决了。
小提醒
以后创建包含代码的文件时,记得用引号把内容括起来,比如要生成phpinfo的文件,应该写:
echo '<?php phpinfo(); ?>' > a.php
这样就不会误触发bash的函数定义啦。
内容的提问来源于stack exchange,提问作者Hilal Najem
相关产品推荐
相关产品推荐

