【问题标题】:Running multiple commands through exec()通过 exec() 运行多个命令
【发布时间】:2014-04-09 08:16:30
【问题描述】:

我需要将一个变量从 php 传递到 blender 中的 python 脚本。

基本上这应该可以工作:

exec("start cmd /k cd C:\Blender & set arg1='file' & blender -P [path to python file]");

相反,它只是将目录更改为 C:\Blender 并停止。好像 php 的 exec() 不喜欢用 "&" 一个接一个地运行多个命令。

我假设这是因为当我打开 cmd 并键入时:

cd C:\Blender & set arg1='file' & blender -P [path to python file]

它打开搅拌机并运行打印 arg1,(文件)的 python 脚本。

是否有人对如何使用 php.ini 中的 exec() 运行多个命令有任何想法。或者也许我应该尝试一种不同的方法将 php 变量传递给搅拌机 python 脚本。

感谢您的帮助!

【问题讨论】:

  • 你能从 php 运行一个 gui 应用程序吗?在 exec() 之前尝试 shell_exec()、chdir()。你在运行安全模式吗?然后只能运行 safe_mode_exec_dir 中的 cmd。此外,您可能想添加 -b 以便搅拌机在没有 gui 的情况下运行。在php manual for exec() 上搜索windexec,其中一个示例创建了一个COM 对象来运行一个cmd。

标签: php python exec blender var


【解决方案1】:

您可能可以使用escapeshellarg。 使用它时,它会将您的整个参数视为单个安全参数。

所以你可以使用,

$variableToPass = "start cmd /k cd C:\Blender & set arg1='file' & blender -P [path to python file]";
exec(escapeshellarg($variableToPass));

希望这会有所帮助。

【讨论】:

  • 感谢您的建议,但它不起作用,(cmd根本没有打开)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
相关资源
最近更新 更多