【问题标题】:running shell script from php从 php 运行 shell 脚本
【发布时间】:2012-03-28 10:53:39
【问题描述】:

我有一个 shell 脚本,如果我在终端 (MAC OSX) 中运行它可以完美运行

#!/bin/bash
cd /Applications/XAMPP/xamppfiles/htdocs/chemedit/

babel -imol  'a.mol' -oinchi 'outputfile.inchi'
babel -imol  'a.mol' -osmi 'a.smsi'
babel a.smi -O out.svg  -xC -xe
exit

我在一个名为 a.sh 的文件中有这个

我想从 PHP 运行它:

$output = shell_exec("bash a.sh 2>&1");

这不起作用并返回:

  Cannot write to outputfile.inchi
0 molecules converted
1 errors 

所有文件

  • 我已经给了两个文件 chmod 777。

  • 我很确定 PHP 的安全模式已关闭。

【问题讨论】:

  • 将 babel 的路径添加到脚本中。
  • 哪个 shell 和用户是 shell_exec 与您的 PHP 配置一起使用?当您在终端中运行它时,您使用的是哪个 shell 和用户?两种配置有区别吗?如果是,在哪些方面?

标签: php macos shell babeljs


【解决方案1】:

babel 命令可能不在运行 PHP 的用户的 PATH 环境变量中,因此脚本通过 PHP。最简单的解决方案是编辑您的 shell 脚本以通过其完整路径引用 babel。

【讨论】:

  • 谢谢,我似乎已经到了某个地方,现在我收到了无法写入 a.smsi 错误,我猜这与权限有关
【解决方案2】:

尝试使用其绝对名称调用 babel。使用which babel 确定这一点,并在您的脚本中用它替换“babel”。

【讨论】:

  • 谢谢,我似乎已经到了某个地方,现在我收到了无法写入 a.smsi 错误,我猜这与权限有关
  • 非常感谢你帮了我很多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
相关资源
最近更新 更多