php exec()可以在wamp中工作,但可以';不读图像

php exec()可以在wamp中工作,但可以';不读图像,php,wamp,Php,Wamp,我想上传一个图像,并将图像作为参数读取到我的程序中。 上传部分正常。exec()可以在hello.exe上运行(只需打印“hello world!”),但不能在我的程序(image唯美2013.exe)上运行 这是我的代码 if ($_FILES["file"]["error"] > 0){ echo "Error: " . $_FILES["file"]["error"]; }else{ echo "File name: " . $_FILES["file"]["name"]."<

我想上传一个图像,并将图像作为参数读取到我的程序中。
上传部分正常。exec()可以在hello.exe上运行(只需打印“hello world!”),但不能在我的程序(image唯美2013.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);
if($\u文件[“文件”][“错误”]>0){
echo“Error:”.$\u文件[“file”][“Error”];
}否则{
echo“文件名:”.$\u文件[“文件”][“名称”]。“
”; 回显“文件类型:”.$\u文件[“文件”][“类型”]。“
”; 回显“文件大小:”($_文件[“文件”][“大小”]/1024)。“Kb
”; 回显“临时名称:”.$\u文件[“文件”][“tmp\u名称”]; 移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\; } exec(“C:\\wamp\\www\\image唯美2013.exe C:\\wamp\\www\\Lena.jpg”,$output,$return\u var); exec(“C:\\wamp\\www\\hello.exe”,$out); var_dump($out); 变量转储(输出); 打印(返回值);
如PHP手册所述

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

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

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

  • 在PHP/5.2及更早版本中,必须将完整的命令和参数括在双引号中
  • 在PHP/5.3及更高版本中,您不必这样做(如果这样做,您的脚本将中断)
没关系。非常感谢。 但这是发布-构建问题。
把文件放进WWW文件夹可以解决这个问题

我不明白你的意思。我使用php5.4.12,你能举个例子吗?