我有个奇怪的问题。我已经在服务器上安装了ffmpeg。当我从SSH(PuTTY)运行“ffmpeg
”时,它会确认安装:
然后我将以下代码放在同一服务器上的一个网站内的一个PHP文件中:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$output = exec('ffmpeg -h');
echo "<pre>$output</pre>";
?>
但是当我运行PHP脚本时,页面是空白的,没有输出。我可以确认
exec
工作正常,因为当我在PHP和terminal中运行php -v | grep cli
时,它们都输出相同的内容。我使用Plesk(web主机版)来管理站点,并通过SSH(/bin/sh)让它访问服务器
我错过了什么?
最佳答案
您希望使用ffmeg
的完整路径,因为它可能不在webserver用户的path环境变量中。
而且,exec()
的返回是输出的最后一行,可能是一个空行,您永远不会知道。因此,使用第二个参数捕获数组中的所有输出:
exec('/path/to/ffmpeg -h', $output);
echo implode('<br>', $output);
或者可以尝试
system()
或passthru()
直接输出:echo "<pre>" . system('/path/to/ffmpeg -h') . "</pre>";
关于php - 命令在SSH终端中有效,但在PHP脚本中无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41623127/