我的环境是系统路径中的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文件夹。
不确定为什么它不起作用?
答案 0 :(得分:0)
一些问题。
我不确定您的apache是如何配置的,但很可能CWD与脚本相同。因此,请提供tar的完整路径。
文件名是'tar.exe',而不是'tar'。改变它。
确保您的开发箱上的PHP未在安全模式下运行。当PHP以安全模式运行时,shell_exec()
不起作用。
如果您希望代码在Linux框和Windows开发框中运行,请创建特定于主机或平台的配置文件(使用PHP_OS
或php_uname('n')
)
答案 1 :(得分:0)
如果您直接从php运行,您将代表您的用户运行该命令,而Apache则是另一个没有权限的帐户。
执行services.msc并找到apache服务,右键>登录选项卡并从本地系统帐户更改为用户创建的帐户,输入用户名和密码,然后重新启动服务。