system()无法在使用Windows Server 2003的php中工作

时间:2009-11-16 14:28:53

标签: php iis-6 windows-server-2003

我必须在服务器上解压缩cabfile(.cab)。 我正在寻找提取cab文件的脚本,但我还没有得到它。 所以现在我尝试使用cabarc.exe提取。 但我面临的问题是,当我运行命令throuw命令行它的工作正常,但当我给php中的system()或exec()函数同样的命令它是行不通的。 代码如下:

    $command = "c:\\exe\\cabarc X c:\\cab\\data.cab c:\\data\\";
if(($output = system($command,$return) != false)
{
  echo "$return";
}

当我在命令行中使用相同的字符串时,它无法正常工作。 请任何机构帮助我为什么它不工作做什么做它的工作是任何权利问题。 我已经给网站提供了执行权限。

谢谢

3 个答案:

答案 0 :(得分:1)

system函数的第二个参数是通过引用传递的,因此需要通过代码进行初始化。此外,您应该使用!==而不是!=来检查错误,因为除了值之外,它还会验证类型。此外,您的if语句中看起来有一个不平衡的括号。试试这个:

$command = "c:\\exe\\cabarc X c:\\cab\\data.cab c:\\data\\";
$return = -1;
$output = system($command, $return);
if($output !== false)
{
    echo "Return value is: " . $return . "\r\n";
    echo "Output is:\r\n" . $output . "\r\n";
}

如果这不能解决您的问题,请确保PHP用户有权访问该文件。

答案 1 :(得分:1)

如果您正在使用NTFS,请检查您的文件权限,并确保Web服务器可以运行该可执行文件,打开源文件并写入目标。

答案 2 :(得分:1)

另一个问题可能是程序不允许运行cmd.exe,可能看看IUSR帐户是否可以执行此程序,因为系统需要调用shell。