我目前正在开发一个web应用程序,它在blender中吐出一个.stl文件。我使用了php,我正在使用exec()调用php中的脚本。请看下面的代码。我从
Php: Running a python script using blender from a php project using cmd commands
$script = "C:\\xampp\\htdocs\\test\\test.py";
$blender_path = "C:\Program Files\Blender Foundation\Blender";
$output = exec("cd $blender_path && blender -b -P $script", $data);
echo "<pre>";
print_r($data);
echo "</pre>";
在当地一切都很好。我把内容上传到我的网站(Linux主机),上传Blender(Linux-https://www.blender.org/download/)改变了路径,什么也没发生。它甚至不输出任何错误。Linux有单独的命令行代码吗?我不习惯使用Linux,在过去的3天里,我一直在努力解决这个问题。
如有任何帮助,我们将不胜感激。
最佳答案
我能想到两种可能性。第一个是路径名,在Linux上没有驱动器号路径应该类似于/home/aniket/tests/blendtest
第二个是运行一个程序,我预计会出现一个错误,但是您可能需要查看日志文件来找到它,或者增加php的详细程度。第一点是文件需要权限设置为可执行,这将涉及chmod +x blender
或可能使用您的ftp软件来设置这一点,它通常在X
这样的权限字符串中表示为RWXRWXRWX
。第二点是在*nix系统上找到命令的方式,有一个path环境变量列出要查找命令的目录,默认情况下当前目录不在该列表中,我不希望宿主公司添加它。
$script = "/home/aniket/test1/test.py";
$blendexe = "/home/aniket/blender2.76/blender";
$output = exec("$blendexe -b -P $script", $data);
echo "<pre>";
print_r($data);
echo "</pre>";
在*nix系统上,
./
表示当前目录,因此您也可以使用$output = exec("cd $blender_path && ./blender -b -P $script", $data);
关于php - 在Linux主机上运行Blender脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33316406/