簡體   English   中英

命令在SSH終端中有效,但在PHP腳本中無效

[英]Command works in SSH terminal, but not in PHP script

我有一個奇怪的問題。 我已經在服務器上安裝了ffmpeg。 當我從SSH(PuTTY)運行“ ffmpeg ”時,它會確認安裝:

ffmpeg通過ssh

然后,將以下代碼放在同一服務器上的網站內的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 -v | grep cli 在PHP和終端中的php -v | grep cli都輸出相同的內容。

我正在使用Plesk(網絡主機版)來管理站點,並已通過SSH( / bin / sh )授予它對服務器的訪問權限

我在這里想念什么?

您想使用ffmeg的完整路徑,因為它可能不在Web服務器用戶的path環境變量中。

另外, exec()的返回是輸出的最后一行,可能永遠是空白行,您永遠不會知道。 因此,使用第二個參數捕獲數組中的所有輸出:

exec('/path/to/ffmpeg -h', $output);
echo implode('<br>', $output);

或者,您可以嘗試system()passthru()直接輸出:

echo "<pre>" . system('/path/to/ffmpeg -h') . "</pre>";

我建議嘗試

$command = escapeshellcmd('/root/bin/ffmpeg -h');
$output = shell_exec($command);
echo "<pre>$output</pre>";

編輯-添加

但是,在這種情況下,問題是出於安全原因,/ root用戶中的文件不可用於Web服務器用戶。 ffmpeg可執行文件應進入/usr/local/bin或Web服務器用戶可用的其他目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM