PHP exec和没有了shell_exec工作(php exec and shell_exec n

2019-07-30 00:20发布

我想运行我的服务器上的exe文件和输出返回到浏览器屏幕。 exe文件需要一个输入文件,然后在屏幕上返回的数据。

为什么不工作的代码?

$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";

它显示在浏览器屏幕上的“NULL”。 我也尝试执行exec()。 在那里,它返回“阵列()”。

Answer 1:

其中的意见上shell_exec手册页说:

当心以下不一致的: shell_exec()和反引号操作符,如果该命令的输出为空,将不会返回一个字符串-他们将返回NULL来代替。

这将使严格的比较,以''返回false


它可如果PHP是在安全模式下被禁用 。

shell_exec()反引号的功能等同物)
当PHP在安全模式下运行时,此功能被禁用。

exec()
您只能进行执行safe_mode_exec_dir 。 基于某些原因,目前不能有..组件的可执行文件路径。 escapeshellcmd()被在此函数的参数来执行。

您可以通过检查服务器的PHP设置phpinfo()函数。



Answer 2:

这应该工作:

$output = array();
exec('myprogram < INP.DAT', $output);
var_dump($output);


Answer 3:

是myprogram可以从默认的shell? 它是在一个特定的目录?
尝试更换myprogram < INP.DAT/full/path/to/myprogram < INP.DAT



Answer 4:

有时,这些功能是没有的PHP残疾人是在安全模式,你必须让他们在php.ini



文章来源: php exec and shell_exec not working
标签: php shell exec