2011-04-09 58 views
1

我正在使用shell_exec命令向我的学校unix服务器发送命令。我可以做像ls echo之类的东西,但是任何与创建或删除文件有关的事情都不起作用。我想我可以为我想执行的命令创建一个脚本并使用shell_exec运行脚本,但是这是一个非常繁琐的过程,还有其他解决方法吗?shell_exec on php

谢谢,

回答

0

听起来像一个权限问题。从PHP中运行whoami并查看它运行的用户。如果您的学校也在使用SELinux之类的东西,那么除了用户/组/模式设置的进程外,还有其他限制。但这是一个起点。

2

shell_exec()是一种非常糟糕的执行命令的方式,只是因为保持开放状态,如果有人利用您的PHP代码,或者设法上传PHP文件,则会使服务器更容易受到攻击。相反,如果可以的话,您应该使用PHP函数,如mkdir()fopen($file, '(r|a|w)+),以便在您的文件不存在的情况下创建文件。实际上,在代码中保留shell_exec(),exec(),pass_thru()之类的任何漏洞都可以在你的服务器上执行shell命令。

现在,关于原始问题,您是否检查过您尝试使用的文件和目录的权限?运行PHP的用户需要具有使用您试图访问的文件和目录的权限。如果您不确定,只需chmod 777您需要在PHP中使用的任何文件和目录。