【问题标题】:Running Linux Command from PHP从 PHP 运行 Linux 命令
【发布时间】:2012-02-01 04:25:12
【问题描述】:

我的情况有点特殊。我正在尝试从名为 Diascope 的 PHP 脚本运行视频编码程序,该脚本依赖于 ImageMagick 提供的“转换”命令。我有一个 bash 脚本,它执行一个非常简单的转换,然后运行名为 Diascope 的应用程序。这是转换代码,以下确实有效,它会创建新文件

convert image.jpg image.png

没有显示错误,但是我像这样运行 Diascope

diascope -clean audio.txt

我可以看到 Diascope 加载属性,因为它打印“Diascope 0.2.1”:

diascope 0.2.1 (ms 2006-2010) 幻灯片生成器 见 http://diascope.sf.net 获取文档和更新。

错误:找不到可执行程序:转换请参阅 发行说明中对 diascope 的要求。

当我运行 shell_exec("whoami"); 时,它会打印“nobody”

那么为什么我可以自己运行转换,但“diascope”进程似乎无法使用它?我已经尝试进入 /usr/local/bin/convert 并将其 chmod 为 777,但它似乎没有任何效果,我还能在这里尝试什么?

更新:我可能应该补充一点,当我尝试在终端上以 root 身份运行 diascope -clean audio.txt 时,它会创建应有的 audio.flv 文件,而且我似乎不能 sudo su nobody 它返回 This account is currently not available.

【问题讨论】:

  • 感谢您不签署帖子。
  • 天哪,你已经完成了将近 200 次
  • 对不起?您的意思是“感谢阅读”字条吗?我可以停止这样做,大声笑
  • 不,我的意思是,“哈哈,我删掉了你多余的‘谢谢’信息,这是我讽刺的评论,要求你不要再这样做了”[编辑:好吧,是的,基本上;)]
  • 你使用什么发行版?检查你的系统日志/日志,看看在你运行进程时是否出现了一些东西

标签: php linux permissions exec shell-exec


【解决方案1】:

PHP 以与 apache 相同的用户身份运行,通常是 www-data 或 nobody。相信你可以使用suPHP+apache来改变PHP运行的用户。

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2018-02-16
    • 2020-07-06
    • 2011-01-10
    相关资源
    最近更新 更多