我目前正在开发一个网络应用程序,该应用程序会在 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/