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