【发布时间】:2016-11-13 18:39:36
【问题描述】:
我正在使用 PHP 的 shell_exec 函数来执行 C 程序的二进制 .exe 文件。
我的 C 程序接受一个输入文本文件,并在输出中创建几个文本文件。为了将它与 Web 前端集成,我使用 php 的 shell_exec 函数来执行一个 shell 脚本,该脚本又调用二进制 C .exe 文件。
这个二进制 .exe 文件、输入文本文件、shell 脚本和 php 文件在服务器端。出于测试目的,我已授予 chmod 777 对服务器端上述文件的访问权限。
php执行shell脚本的摘录如下:
echo shell_exec('sh segments.sh 2>&1');
现在,我在这里执行一个shell脚本,shell脚本运行二进制.exe文件如下:
->segments.sh
./auto_import.exe input_file.txt -terms
auto_import 是 C 二进制 .exe 文件。
当我在终端中单独运行 shell 脚本时,它会给出正确的输出。也就是说输出将是 4-5 个不同的文本文件。
但是当我用 PHP 调用 shell 脚本时,我无法获得任何输出,并且我不确定如何从我的二进制文件接收输出,即文本文件的数量。
我尝试为我的文件提供绝对路径,例如:
在被调用的php文件shell脚本中:
echo shell_exec('sh /path/segments.sh 2>&1');
在shell脚本中,二进制文件调用如下
echo shell_exec('sh /path/binary 2>&1');
我也使用了exec函数如下:
$cmd = "/auto_import.exe input_file.txt -terms"; echo exec($cmd,$output);
在这方面你能帮帮我吗?
【问题讨论】:
标签: php exec shell-exec