如何将命令从 PHP 脚本发送到终端 运行 一个 Python 解释器?

How do I send commands from PHP script to Terminal running a Python interpreter?

我想从 PHP 脚本访问终端以打开 Maya 的独立版本,然后从终端在 Maya 中 运行 Python 脚本。

我已经能够使用 exec() 函数从我的 PHP 脚本向终端发送命令。例如,我已经能够使用以下代码打开带有 .OBJ 文件的 Maya。

//Open Maya with .OBJ
$cmd='open -a /Applications/Autodesk/maya2015/maya.app /Applications/AMPPS/www/webGL/upload/Character.obj';
exec($cmd);

然后我发现我可以使用此目录在终端中打开 Maya Python 解释器: /Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy

在终端中执行此目录时,它运行是 Maya Python 解释器。当解释器 运行ning 时,我似乎无法再从我的 PHP 脚本向终端发送命令(现在是 Python 代码)。

我使用 exec() 函数执行我想做的事情是否正确?或者这个函数是否只是在同一个终端中连续执行单个命令而不是多个命令?我是否需要使用将命令发送到特定 shell 的不同功能,以便所有命令都在同一个终端中执行?

这是我一直试图发送到终端的代码,以 运行 Maya Python 解释器,然后导入 Maya 独立库并对其进行初始化。

//Open Maya interpreter
$cmd2="/Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy";
//Import standalone and initialise
$cmd3="import maya.standalone; maya.standalone.initialize( name='python' )"

//Execute commands
shell_exec($cmd2);
shell_exec($cmd3);

您不需要使用 mayapy 单独编写代码,您可以 运行 直接使用 mayapy 编写脚本

test.py

import os
import maya.standalone
maya.standalone.initialize()
import maya.cmds as cmds
print dir(cmds)

你可以像这样简单地调用这个脚本

mayapy /your/path/test.py

你的情况

$cmd2="/Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy /your/path/test.py";
shell_exec($cmd2);