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? ?
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----
-------! ! ! ! ! ! ! ! ! ! ! ! !
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.