在没有完整路径的情况下从 apache php 调用 ffmpeg

call ffmepg from apache php without full path

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

从命令行调用 ffmpeg 执行程序 通过网络从 php 调用 ffmpeg 不执行程序 通过网络从 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 使用默认 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 文件夹的全部内容都将包含在配置文件中。