我已将matlab脚本编译成独立的win应用程序和控制台应用程序。可以使用image_process pic1.png从命令行调用该脚本。 exe运行并生成一个字符串作为结果。 不,我想在php中部署它。我在我的主网站目录中添加了一个名为uploads的文件夹。我需要运行php来调用matlab exe来运行此文件夹中的图像。
现在我转到我的PHP脚本。我定义了我的上传目录:
define("UPLOAD_DIRECTORY","./uploads"); // defines the uploads directory
然后我将路径添加到我的图像处理器: 定义( “IMAGE_PROCESSORE”,目录名(目录名(文件)) “/ image_process.exe”);
最后我将我的流程配置为:
case "process":
$res=array();
$pic=isset($_REQUEST["pic"])?trim($_REQUEST["pic"]):"";
if($pic==""){
echo "No picture name is passed";
exit();
}
exec(IMAGE_PROCESSORE.' "'.realpath(UPLOAD_DIRECTORY).'" '.$pic,$res);
//exec(IMAGE_PROCESSORE." ".$pic,$res); // this one if I define the image_process.exe inside the uploads folder
echo"<pre>";
print_r($res);
echo"</pre>";
break;
所以当我打电话给我的php时:
localhost/mysitename/phpresponse.php?act=process&pic=pic1.png
我没有输出,但如果我运行
localhost/mysitename/phpresponse.php?act=process&pic=c:\xampp\htdocs\mysitename\uploads\pic1.png
matlab编译的文件将运行并执行
我真的很困惑,我确实尝试过很多东西,但没有运气......
答案 0 :(得分:1)
它看起来与您的Last Question有关,所以我会在这里回答。
首先,在编译的Matlab EXE 中,参数通过命令行逐个传递。
我首先在命令行中运行 PHP 之外的 EXE 文件,并在脚本中提供参数。如果有效,则问题出在 PHP 脚本中。如果没有再次检查Matlab代码。
答案 1 :(得分:0)
我确实找到了解决方案。我已经让脚本调用了2个参数然后使用exec而不是使用passthru执行编译的matlab脚本。我不知道为什么它确实有效,但至少它确实如此: - )