我想运行我的服务器上的exe文件和输出返回到浏览器屏幕。 exe文件需要一个输入文件,然后在屏幕上返回的数据。
为什么不工作的代码?
$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";
它显示在浏览器屏幕上的“NULL”。 我也尝试执行exec()。 在那里,它返回“阵列()”。
我想运行我的服务器上的exe文件和输出返回到浏览器屏幕。 exe文件需要一个输入文件,然后在屏幕上返回的数据。
为什么不工作的代码?
$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";
它显示在浏览器屏幕上的“NULL”。 我也尝试执行exec()。 在那里,它返回“阵列()”。
其中的意见上shell_exec
手册页说:
当心以下不一致的:
shell_exec()
和反引号操作符,如果该命令的输出为空,将不会返回一个字符串-他们将返回NULL
来代替。这将使严格的比较,以
''
返回false
。
它可如果PHP是在安全模式下被禁用 。
shell_exec()
反引号的功能等同物)
当PHP在安全模式下运行时,此功能被禁用。
exec()
您只能进行执行safe_mode_exec_dir
。 基于某些原因,目前不能有..
组件的可执行文件路径。escapeshellcmd()
被在此函数的参数来执行。
您可以通过检查服务器的PHP设置phpinfo()
函数。
这应该工作:
$output = array(); exec('myprogram < INP.DAT', $output); var_dump($output);
是myprogram可以从默认的shell? 它是在一个特定的目录?
尝试更换myprogram < INP.DAT
与/full/path/to/myprogram < INP.DAT
有时,这些功能是没有的PHP残疾人是在安全模式,你必须让他们在php.ini