【发布时间】:2013-02-23 02:00:55
【问题描述】:
我在 Windows 服务器上运行 PHP 5.4.9
我已经尝试在 PHP 中运行所有脚本命令(exec、shell_exec、system、proc_open、passthru)。所有似乎都返回空或 null。
我已将 phantomjs 添加为 PATH 变量。
在命令提示符下运行phantomjs --version,它返回1.8.2
虽然当我尝试运行时
$return = exec("phantomjs --version")
或
$return = shell_exec("phantomjs --version", $output)
$return 始终为空,$output 为空。
我确保 IUSR 和 IIS_IUSRS 用户有权运行 phantomjs.exe
安全模式在 php.ini 中被禁用
另外,我尝试运行 exec('ls') && exec('ipconfig /all'),然后输出我期望的数据。
我不确定还可以尝试什么。
【问题讨论】:
-
你确定 phantomjs 在被服务器执行()的 shell 路径中吗?只是因为它在您帐户的路径中,它可能不在 IUSR_IIS 帐户的路径中。
-
尝试以下操作,看看是否填充了 $out 或 $ret。 $out 将是一个数组。 exec('phantomjs --version'.' 2>&1',$out,$ret);
-
路径在系统变量->路径变量中。
-
使用Gavin的推荐时,$out返回一个空数组,$ret为1。 exec('phantomjs --version'.'2>&1',$out,$ret); out: array(0) { } ret: int(1)
-
不是特别有用,但我可以告诉你 1 是一个错误代码(应该是 0)并且 $out 应该已经捕获到标准输出的任何输出,所以看起来没有。如果您可以控制服务器,请尝试将 php 进程设置为在系统帐户下运行(仅用于测试)以清除权限问题的疑虑。
标签: php windows exec phantomjs