shell_execute在windows中的apache上不运行tar

时间:2011-08-03 09:16:30

标签: php

我的环境是系统路径中的php5.3 + apache + windows xp + bsdtar.exe(重命名为tar.exe)

我在extract.php中有这个代码:     shell_exec('tar --no-same-permissions -xjf“C:\ Documents and Settings \ abcxyz.tar.bz2”');

我可以在cmdline中使用php客户端运行extract.php,如:     php extract.php

但是每当我尝试在本地服务器上运行时,tar都不会执行。我的php和apache路径都包含tar.exe文件夹。

不确定为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

一些问题。

  1. 我不确定您的apache是​​如何配置的,但很可能CWD与脚本相同。因此,请提供tar的完整路径。

  2. 文件名是'tar.exe',而不是'tar'。改变它。

  3. 确保您的开发箱上的PHP未在安全模式下运行。当PHP以安全模式运行时,shell_exec()不起作用。

  4. 如果您希望代码在Linux框和Windows开发框中运行,请创建特定于主机或平台的配置文件(使用PHP_OSphp_uname('n')

答案 1 :(得分:0)

如果您直接从php运行,您将代表您的用户运行该命令,而Apache则是另一个没有权限的帐户。

执行services.msc并找到apache服务,右键>登录选项卡并从本地系统帐户更改为用户创建的帐户,输入用户名和密码,然后重新启动服务。