繁体   English   中英

php exec和shell_exec无法正常工作

[英]php exec and shell_exec not working

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

为什么这段代码不起作用?

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

它在浏览器屏幕上显示“NULL”。 我也试过exec()。 它返回“Array()”。

shell_exec手册页上的一条评论说:

请注意以下不一致:如果命令的输出为空,则shell_exec()和反引号操作符不会返回字符串 - 它们将返回NULL

这将严格比较''返回false


如果PHP处于安全模式,它可能会被禁用

shell_exec() (功能相当于反引号)
当PHP以安全模式运行时,此功能被禁用。

exec()
您只能在safe_mode_exec_dir执行可执行文件。 出于实际原因,目前不允许在可执行文件的路径中包含..组件。 escapeshellcmd()在此函数的参数上执行。

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

这应该工作:

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

myprogram是否可以从默认shell获得? 它在特定目录中吗?
尝试更换myprogram < INP.DAT/full/path/to/myprogram < INP.DAT

有时这些函数被禁用而php没有安全模式,你必须在php.ini中启用它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM