PHP图片作为参数传递时没有运行exec函数

时间:2017-05-10 03:08:53

标签: php c++ arguments exec exe

我在PHP网站上运行“exec”功能时遇到问题。我能够使用一个可执行文件运行它几次,该可执行文件只接受一个变量参数并返回一些测试消息。但是,当我使用执行某些图像处理的可执行文件时,我想从用户上传的网站传递图像作为参数,它似乎根本不执行可执行文件。我甚至在可执行文件中有一些cout命令以确保其运行,但这些命令没有显示在网站上。所以我认为由于某种原因php无法运行可执行文件?我能从桌面上运行得很好......

以下是我的PHP网站上无法运行的代码示例:

$imgtest1="/uploaded_files/me.jpg";
$imgtest2="/uploaded_files/clusteroutput.jpg";
$nosuppix = 400;
$noweight = 100;
$executabletest = exec("ImgProc $imgtest1 $nosuppix $noweight $imgtest2");
echo $executabletest;

有没有办法从exec函数调试或获取错误输出?将图像传递给可执行文件时是否存在我遗漏的内容?可执行文件使用多个DLL文件,这些文件与可执行文件位于同一文件夹中。他们是否因某种原因需要打包在一起?我道歉,但我真的不知道还有什么可以测试...

***编辑:如果我写出escapeshellcmd本身的所有代码,我现在能够运行它...为什么我不能只传递变量?

$cmdinput = escapeshellcmd('SuperpixelsFinal "D:/WebPages/TALIA ART/TALIA ART/uploaded_files/me.jpg" 400 100 "D:/WebPages/TALIA ART/TALIA ART/uploaded_files/clusteroutput.jpg"');

1 个答案:

答案 0 :(得分:0)

对于有这个问题的其他人来说,这是因为当我应该为每个单独的字符串使用escapeshellarg然后使用仅使用变量的双引号运行exec时,我正在使用escapeshellcmd: $ executabletest = exec(“SuperpixelsFinal $ imgtest1 $ nosuppix $ noweight $ imgtest2”);