我使用shell_exec命令将命令发送到学校的unix服务器。我可以做像ls echo这样的事情,但任何与创建或删除文件有关的事情都不起作用。我想我可以为我想要执行的命令创建一个脚本并使用shell_exec运行脚本,但是这是一个非常繁琐的过程有没有其他方法解决这个问题?
谢谢,
答案 0 :(得分:2)
shell_exec()
是一种非常糟糕的执行命令的方法,只是因为让它打开,如果有人利用你的PHP代码,或者设法上传一个PHP文件,你就会让你的服务器更加容易受到攻击。相反,如果可以,您应该使用mkdir()
和fopen($file, '(r|a|w)+)
之类的PHP函数,以便在不存在的情况下创建文件。实际上,在代码中保留shell_exec()
,exec()
,pass_thru()
等,任何漏洞都可以在您的服务器上执行shell命令。
现在,关于原始问题,您是否检查了您尝试使用的文件和目录的权限?运行PHP的用户需要具有使用您尝试访问的文件和目录的权限。如果您不确定,只需chmod 777
您需要在PHP中使用的任何文件和目录。
答案 1 :(得分:0)
听起来像权限问题。从PHP中运行whoami
,查看它正在运行的用户。如果您的学校也在使用像SELinux这样的东西,那么除了用户/组/模式设置的进程之外,还有其他进程限制。但这是一个起点。