PHP 外部程序调用

PHP 外部程序调用

我的设置如下: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 时,数组结果为空。当我在命令提示符中输入完全相同的命令时,代码运行良好(没有语法错误)。我也使用绝对路径。

答案1

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

相关内容