PHP外部程序调用

时间:2013-07-12 15:04:11

标签: php windows command-line permissions

我的设置如下:Windows 7,启用Apache和PHP的XAMPP我有一个PHP脚本,我在其中调用外部程序来执行转换。此外部程序是一个EXE文件,需要3个属性:

  • 源文件
  • 目标文件
  • 其他标志(转换类型等)

当我使用XAMPP内置的命令行工具来执行我的脚本时,一切正常。但是当我在PHP脚本中使用exec()函数时,没有创建输出文件。我很确定转换实际上正在发生(大约需要5秒,大约与运行PHP脚本的时间相同)。

我认为这是权限,所以我已经将EXE文件移动到与我的PHP文件相同的文件夹,并调整了整个文件夹的权限(我授予所有用户所有权限)。我还禁用了Windows UAC,并尝试将命令放在BAT文件中。该文件尚未创建。

非常感谢任何帮助或提示!

我的PHP代码如下:

exec('c:\converter.exe c:\src.txt c:\dst.txt -f', $output);
print_r($output);

当我打印出$ output时,数组结果为空。当我在命令提示符中输入完全相同的命令时,代码就像一个魅力(没有语法错误)。我也使用绝对路径。

2 个答案:

答案 0 :(得分:0)

尝试将可执行文件复制到与应用程序相同的文件夹中。 试试

    exec("script.exe src.txt dst.txt", &$output);
    echo $output;

另外,不要忘记使用escapeshellcmd()为您的应用添加一些安全性。

答案 1 :(得分:0)

非常感谢您的投入!事实证明,这是由“交互式服务检测”功能引起的Windows问题。 Apache作为系统服务运行,阻止了对外部程序的调用(使用GUI)。我在XAMPP中禁用了run-as-service功能,解决了这个问题。可以在此处找到更全面的解释:http://php.net/manual/en/book.exec.php