【问题标题】:system() not working in php using windows server 2003system() 在使用 windows server 2003 的 php 中不起作用
【发布时间】:2010-12-17 01:59:33
【问题描述】:

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

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

当我在命令行中使用相同的字符串时它无法正常工作。 请任何人帮助我了解为什么它不起作用如何使它起作用是任何权利问题。 我已授予该站点的执行权限。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        system 函数的第二个参数是通过引用传递的,因此它需要由您的代码初始化。此外,您应该使用 !== 而不是 != 检查 false,因为它除了验证值之外还验证类型。此外,您的 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 用户有权访问该文件。

        【讨论】:

        • 感谢 Asaph 的回复我已经听从了您的建议。但我的问题仍然存在。我已经完全控制了站点和文件夹。但它不起作用。 php和iis有什么问题吗?感谢您的帮助
        • @jazzy:尝试在 IIS 之外运行 PHP 程序。尝试直接在控制台上运行 PHP 程序。
        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多