0

我想上传图像并将图像作为参数读取到我的程序中。
上传部分没问题。exec() 可以在 hello.exe 上工作(只需打印“Hello world!”),但它不能在我的程序上工作(ImageAesthetic2013.exe)
这是我的代码

if ($_FILES["file"]["error"] > 0){
echo "Error: " . $_FILES["file"]["error"];
}else{
echo "File name: " . $_FILES["file"]["name"]."<br/>";
echo "File type: " . $_FILES["file"]["type"]."<br/>";
echo "File size: " . ($_FILES["file"]["size"] / 1024)." Kb<br />";
echo "temp name: " . $_FILES["file"]["tmp_name"];
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
}

exec("C:\\wamp\\www\\ImageAesthetic2013.exe C:\\wamp\\www\\Lena.jpg",  $output,$return_var);
exec("C:\\wamp\\www\\hello.exe", $out);
var_dump($out);
var_dump($output);
print_r($return_var);
4

2 回答 2

0

正如 PHP 手册所述,

在 Windows 中,exec() 发出对“cmd /c your_command”的内部调用。这意味着您的命令必须遵循 cmd.exe 强加的规则,其中包括完整命令周围的一组额外引号:

http://ss64.com/nt/cmd.html

当前的 PHP 版本考虑到这一点并自动添加引号,但旧版本没有。

显然,更改是在 PHP/5.3.0 中进行的,但没有向后移植到 5.2.x,因为它是向后不兼容的更改。总结一下:

  • 在 PHP/5.2 及更早版本中,您必须将完整的命令和参数括在双引号中
  • 在 PHP/5.3 及更高版本中,您不必这样做(如果这样做,您的脚本将中断)
于 2013-10-19T17:02:08.843 回答
0

没关系。谢谢!但这是发布构建问题。将文件放入WWW文件夹即可解决问题!

于 2013-10-28T18:32:57.300 回答