【问题标题】:call ffmepg from apache php without full path从没有完整路径的apache php调用ffmpeg
【发布时间】:2015-02-14 05:43:00
【问题描述】:

我需要一个 apache /php 来识别 ffmpeg 命令,而无需指定 /usr/local/bin/ffmpeg 的完整浴

从命令行调用 ffmpeg 执行程序 通过 web 从 php 调用 ffmpeg 不会执行程序 通过 web 从 php 调用 /usr/local/bin/ffmpeg 确实会执行程序

为什么: 一个 php 脚本调用 youtube-dl(一个已编译的程序)并在内部执行 ffmpeg

提前谢谢你 - 试过ffmpeg路径: 哪个ffmpeg /usr/local/bin/ffmpeg

echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


#php code for testing:
$output = shell_exec('/usr/local/bin/ffmpeg 2>&1');
echo "shell exec /usr/local/bin/ffmpeg <pre>$output</pre>";
#Response:
ffmpeg version 2.5.3 Copyright #(good)

#Second php code for testing:
$output = shell_exec('ffmpeg 2>&1');
echo "shell exec <pre>$output</pre>";
#Response:
sh: ffmpeg: command not found #(bad)

【问题讨论】:

    标签: php apache ffmpeg youtube-dl


    【解决方案1】:

    PHP 使用默认的profile 来执行带有backticks/shell_exec 的命令。它显然不包括/usr/local/bin 中的$PATH。要解决此问题,您可以将/usr/local/bin 显式添加到您的默认路径:

    sudo echo '$PATH=/usr/local/bin:$PATH' > /etc/profile.d/php_needed.sh
    

    在现代系统中,/etc/profile.d 文件夹的全部内容将包含在配置文件中。

    【讨论】:

    • 谢谢我运行了那个命令,连同更新的b,hash -r重新启动了httpd,php/apache仍然说找不到ffmpeg命令
    • /etc/profile.d/php_needed.sh的内容是$PATH=/usr/local/bin:$PATH
    • 嗯,它一直对我有用,很抱歉误导了你。试试这些:stackoverflow.com/questions/3428647/…
    • 谢谢 putenv("PATH=".$_ENV["PATH"].':/usr/local/bin:/usr/bin:/bin');我该怎么感谢你呢
    • 对不起,还有一个问题 - 谢谢 - 在此之前我搞砸了我的 $path 东西,尝试了不同的东西 - 当我通过 putty 使用 root 登录到 ssh 时,我得到最后登录:2 月 14 日星期六 05:25 :58 2015 从 10.10.10.101 -bash:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin=/usr/local/bin:/usr/ local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin: 没有这样的文件或目录从未出现过我如何摆脱它?并将路径恢复为默认值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2018-04-13
    • 2016-02-13
    相关资源
    最近更新 更多