Heim >Backend-Entwicklung >PHP-Tutorial >ffmpeg-php Die Funktion ffmpeg passthru() kann beim Ausführen einer PHP-Datei im Terminal transkodiert werden, kann jedoch nicht transkodiert werden, wenn über das Web auf die PHP-Datei zugegriffen wird. Was ist der Grund? ?

ffmpeg-php Die Funktion ffmpeg passthru() kann beim Ausführen einer PHP-Datei im Terminal transkodiert werden, kann jedoch nicht transkodiert werden, wenn über das Web auf die PHP-Datei zugegriffen wird. Was ist der Grund? ?

WBOY
WBOYOriginal
2016-08-29 08:50:491541Durchsuche

Problemszenario: Verwenden Sie ffmpeg zum Transkodieren von Dateien.
Problembeschreibung: Verwenden Sie PHP, um den Terminalbefehl ffmpeg über die drei Methoden exec(), passhru() und system() aufzurufen, um eine Transkodierung zu erreichen
Der Code lautet wie folgt:

<code>$cmd = '/usr/local/bin/ffmpeg -i test.mpg -c:v libx264 -b:v 1024k -b:a 128k -ar 16000 fina6555555431l.mp4';
echo shell_exec('whoami');
passthru($cmd,$res);
var_dump('zhuangtai'.$res); </code>

Das Ausführen dieser PHP-Datei im Terminal kann normal transkodiert werden.
Der Zugriff auf diese Datei über das Web kann jedoch nicht transkodiert werden. Warum? ?
Der vollständige Pfad von ffmpeg wurde zuvor nicht geschrieben und der Statuscode von passhru() lautete, dass der Befehl nicht gefunden werden konnte. Jetzt gibt der Zugriff im Web 1 zurück, was darauf hinweist, dass die Ausführung nicht erfolgreich war.
Führen Sie die PHP-Datei direkt im . aus. Der Status ist 0 und die Ausführung ist erfolgreich.
Hat ffmpeg ein Problem mit Benutzerberechtigungen?
Der im Web gedruckte Benutzer ist www-data
Das Terminal ist root

Ich habe das noch nie gemacht. Was ist der Grund für diese Situation? . . .
. Dringend, dringend. . .
Mein Bruder beschäftigt sich mit der mobilen Entwicklung, aber ich kenne mich damit nicht aus. Ich habe viel gegoogelt, aber ich kann weder den Grund noch die Lösung finden----

-------! ! ! ! ! ! ! ! ! ! ! ! !

Antwortinhalt:

Problemszenario: Verwenden Sie ffmpeg zum Transkodieren von Dateien.
Problembeschreibung: Verwenden Sie PHP, um den Terminalbefehl ffmpeg über die drei Methoden exec(), passhru() und system() aufzurufen, um eine Transkodierung zu erreichen
Der Code lautet wie folgt:

<code>$cmd = '/usr/local/bin/ffmpeg -i test.mpg -c:v libx264 -b:v 1024k -b:a 128k -ar 16000 fina6555555431l.mp4';
echo shell_exec('whoami');
passthru($cmd,$res);
var_dump('zhuangtai'.$res); </code>

Das Ausführen dieser PHP-Datei im Terminal kann normal transkodiert werden.
Der Zugriff auf diese Datei über das Web kann jedoch nicht transkodiert werden. Warum? ?
Der vollständige Pfad von ffmpeg wurde zuvor nicht geschrieben und der Statuscode von passhru() lautete, dass der Befehl nicht gefunden werden konnte. Jetzt gibt der Zugriff im Web 1 zurück, was darauf hinweist, dass die Ausführung nicht erfolgreich war.
Führen Sie die PHP-Datei direkt im . aus. Der Status ist 0 und die Ausführung ist erfolgreich.
Hat ffmpeg ein Problem mit Benutzerberechtigungen?
Der im Web gedruckte Benutzer ist www-data
Das Terminal ist root

Ich habe das noch nie gemacht. Was ist der Grund für diese Situation? . . .
. Dringend, dringend. . .
Mein Bruder beschäftigt sich mit der mobilen Entwicklung, aber ich bin damit nicht vertraut. Ich habe viel gegoogelt, aber ich kann weder den Grund noch die Lösung finden----

-------! ! ! ! ! ! ! ! ! ! ! ! !

Sie verwenden den Root-Benutzer im Terminal. Dieser Benutzer verfügt über unbesiegbare Berechtigungen, während die Benutzerberechtigungen im Web begrenzt sind.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn