我想上传图像并将图像作为参数读取到我的程序中。
上传部分正常。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);
正如 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 及更高版本中,您不必这样做(如果这样做,您的脚本将中断)
没关系。谢谢!但这是发布构建问题。文件放入WWW文件夹可以解决问题!