我有个奇怪的问题。我已经在服务器上安装了ffmpeg。当我从SSH(PuTTY)运行“ffmpeg”时,它会确认安装:
php - 命令在SSH终端中有效,但在PHP脚本中无效-LMLPHP
然后我将以下代码放在同一服务器上的一个网站内的一个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/

10-10 23:29
查看更多