【问题标题】:Running Installed Binaries from PHP Script (as apache)从 PHP 脚本运行已安装的二进制文件(作为 apache)
【发布时间】:2013-05-31 07:19:49
【问题描述】:

我正在尝试编写一个 PHP 脚本来运行一个相当简单的 shell 命令。命令是 Pygmentize,它是我安装的二进制文件,位于 /usr/local/bin/pygmentize-1.4。这在我的 Web 服务器(apache 服务器中的目录)的命令行中运行良好,但是当我尝试在 PHP 脚本中包含该语句时它失败了。

$command = "pygmentize -f html $extra_opts -l $language $temp_name";
$output = array();
$retval = -1;

exec( $command, $output, $retval );
echo $retval;

该命令返回值127,这似乎意味着脚本找不到二进制文件,我认为我安装到了错误的位置。我将它安装到与 PHP 脚本位于同一目录的目录中,但我不确定从那里去哪里。任何建议将不胜感激!

我想总结一下,我如何/在哪里安装 Pygments 以便我的脚本可以访问它?

【问题讨论】:

  • 使用完整路径,例如"/path/to/pygmentize ..."。请记住,Apache 中的 exec() 将具有与标准登录 shell 不同的 shell 环境(包括 $PATH)。
  • 尝试以__DIR__."/pygmentize -f html $extra_opts -l $language $temp_name"运行它
  • 您可能还需要调用 putenv 来获取该命令可能需要的任何环境变量

标签: php apache pygments


【解决方案1】:

使用完整路径,因为php在另一个用户下运行,而./不是这个用户执行脚本时的apache目录:

$command = "/usr/local/bin/pygmentize-1.4-f html $extra_opts -l $language $temp_name";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2011-03-27
    • 2019-04-15
    • 1970-01-01
    • 2011-04-26
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多