在linux上调用php exec函数

Posted

技术标签:

【中文标题】在linux上调用php exec函数【英文标题】:Call php exec function on linux 【发布时间】:2012-12-14 08:01:52 【问题描述】:

几个月前,我在 Windows 上制作了小型 c++ 控制台应用程序。我需要在浏览器上运行 exe 文件。我使用 exec php 函数,一切正常。现在我尝试在 Linux 上做同样的事情,以便我可以将可执行文件放在 Linux Web 服务器上。当从控制台调用时,我的 linux 可执行文件(修复)工作。但我无法通过 exec 函数运行可执行文件。

xampp windows: - 这行得通,我得到了我的结果。

<?php
$imagename = $_GET['imagename'];
exec('inpainting.exe' .$imagename); 
echo "<img src=\"./images/img-uploads/ob_img$imagename.jpg\" />";
?>

但是如何在 xampp linux 上运行它呢?我试试这个,结果是空白屏幕。

<?php
$imagename = $_GET['imagename'];
exec('inpainting' .$imagename); 
echo "<img src=\"./images/img-uploads/ob_img$imagename.jpg\"/>";
?>

我尝试了更多的东西,但没有任何反应。有人说 exec 是坏事,如果有人有其他更好的解决方案 - 请与我分享。有任何想法吗?天呐

我允许对工作文件夹的所有权限。我在 Ubuntu 12.4 上运行 xampp 1.7.3a

【问题讨论】:

您是否尝试过在 exec 中使用可执行文件的完整路径? 你需要在程序和文件名之间留一个空格,@Michael 说的可能也有帮助。 Linux 无法运行 Windows 的可执行文件。此外,那里还有一个巨大的安全漏洞。 它可能是该软件的 linux 版本... @RyanNaddy “几个月前,我在 Windows 上制作了小型 c++ 控制台应用程序。”听起来他可能已经上传了二进制文件.... 【参考方案1】:

这可能会有所帮助,我添加了第二个参数然后进行了转储,它应该显示已运行命令的所有输出。

<?php
$imagename = $_GET['imagename'];
exec('inpainting ' .$imagename, $opt); 
var_dump($opt);
echo "<img src=\"./images/img-uploads/ob_img$imagename.jpg\"/>";

【讨论】:

我尝试过,但我得到的不是图像:array(0) @Rile 我看到你已经接受了这个作为答案。我面临着类似的问题。您能解释一下您是如何解决问题的吗? 我没有解决我的问题 :( 抱歉

以上是关于在linux上调用php exec函数的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统编程之程序的执行(exec函数族)

php的ssh2_exec()函数不能正常使用?

php-fpm linux环境使用exec函数调用ffmpeg,报错ffmpeg: command not found的解决方法

LINUX+NGINX下的PHP shell_exec()函数执行linux命令 2019-08-08

linux的子进程调用exec( )系列函数

PHP的exec()函数无返回值排查方法[转]