2010-01-11 208 views
0

我试图通过PHP中的system()执行命令。该命令是/ usr/bin/unzip,但该函数返回错误代码127.没有其他输出。如果我直接在shell中运行相同的命令,它就可以工作。系统()在PHP中修改命令

apache错误日志说'sh:/ unzip:not found'。我还尝试将该命令放入与PHP脚本位于同一目录中的shell脚本,并通过system()调用shell脚本。同样的情况发生:如果shell脚本被称为'doit.sh',那么apache日志中的错误消息将是'sh:/doit.sh:not found'。

exec()具有相同的行为。

PHP版本是5.2.11-2与suhosin扩展。

任何想法什么PHP可以做我的命令?

+2

给我们一些代码。 ;) – hsz 2010-01-11 16:28:05

+0

system('/ usr/bin/unzip somestuff',$ retval);后续代码var_dump($ RETVAL); 你还需要什么? – arsenbonbon 2010-01-11 16:32:17

回答

0

在php.ini中关闭安全模式。

如果安全模式开启且safe_mode_exec_dir属性为空,则您将获得与所述完全相同的行为。

+0

我以为它已关闭,它是全局的,但不是本地的。 – arsenbonbon 2010-01-13 07:58:15

3

看起来,如果要发送“解压缩”命令时,你应该使用“在/ usr /斌/解压缩”

如果没有,那么,有,如果你的网络服务器在chroot环境中运行你检查?

C.

+0

当我查看/ proc//root时,它显示了真实/,所以我猜测它不是chrooted – arsenbonbon 2010-01-11 16:37:09

1

也许试试只是命令名?

system('unzip somestuff', $retval); 
+0

完全相同的行为 – arsenbonbon 2010-01-11 16:37:50