php - 在 linux 主机上运行 blender 脚本

标签 php python linux blender

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

相关文章:

python - 如何使用 min 和 max 函数解决这个问题,但没有条件语句

python - 使用python PIL读取BMP RGBA不起作用

mysql - 无法打开/proc/net/unix : No such file or directory//invoke-rc. d: 无法确定当前运行级别

php - Laravel 中的元数据对象处理

php - 如何通过 PHP 脚本下载大文件

python - 函数如何接受冒号(范围运算符)作为参数(在 Python 中)?

linux - 单个bash文件中不同进程的最大内存使用量

c - 为什么 scanf 可以读取超过 1024 个字符,而 stdin 流缓冲区只有 1024 个字节?

php - 在 while 循环中添加 mysql_num_rows 总数

PHP 代码忽略日