@MrCheatEugene

Почему Monolog не может записать файл?

Пытаюсь запустить HLS стрим через FFMpeg.
Использую библиотеку https://github.com/aminyazdanpanah/PHP-FFmpeg-vide....
Код:
require '/phplibs/vendor/autoload.php'; // path to the autoload file
use Monolog\Handler\StreamHandler;
use Monolog\Logger;

$config = [
    'ffmpeg.binaries'  => '/usr/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/bin/ffprobe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12,   // The number of threads that FFmpeg should use
];

$log = new Logger('FFmpeg_Streaming');
$log->pushHandler(new StreamHandler('/var/log/ffmpeg-streaming.log')); // path to log file
    
$ffmpeg = Streaming\FFMpeg::create($config, $log);
$video = $ffmpeg->open('video.mp4');
$video->hls()
    ->x264()
    ->autoGenerateRepresentations([1080, 480, 240])
    ->save('hls-stream.m3u8');

Ошибка:
[Thu Nov 11 17:20:48.713222 2021] [proxy_fcgi:error] [pid 10223] [client IP:52534] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught Streaming\\Exception\\RuntimeException: Unable to save the file in /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/File.php:68\nStack trace:\n#0 /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/HLSPlaylist.php(92): Streaming\\File::put()\n#1 /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/HLS.php(314): Streaming\\HLSPlaylist->save()\n#2 /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/HLS.php(303): Streaming\\HLS->savePlaylist()\n#3 /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/Stream.php(123): Streaming\\HLS->getPath()\n#4 /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/Stream.php(163): Streaming\\Stream->run()\n#5 /var/www/html/test-hls/hls.php(21): Streaming\\Stream->save()\n#6 {main}\n  thrown in /phplibs/vendor/aminyazdanpanah/php-ffmpeg-video-streaming/src/File.php on line 68'

Что мне пытается сказать сервер я не до конца понял.
До этого была ошибка
[Thu Nov 11 17:19:17.884360 2021] [proxy_fcgi:error] [pid 10221] [client IP:52527] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/log/ffmpeg-streaming.log" could not be opened in append mode: failed to open stream: Permission denied in /phplibs/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:146\nStack trace:\n#0 /phplibs/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(48): Monolog\\Handler\\StreamHandler->write()\n#1 /phplibs/vendor/monolog/monolog/src/Monolog/Logger.php(327): Monolog\\Handler\\AbstractProcessingHandler->handle()\n#2 /phplibs/vendor/monolog/monolog/src/Monolog/Logger.php(526): Monolog\\Logger->addRecord()\n#3 /phplibs/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php(60): Monolog\\Logger->info()\n#4 /phplibs/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php(207): Alchemy\\BinaryDriver\\ProcessRunner->run()\n#5 /phplibs/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php(136): Alchemy\\BinaryDriver\\AbstractBinary->run()\n#6 /phplibs/...'
Permission Denied, создал файл в указанном месте, поставил права 777.
Теперь мне пишет только "Unable to save the file in ", хотелось бы спросить. А что собственно это значит? Он не может создать файл? Сохранить его? Перезаписать? Нет прав?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
В сообщениях об ошибке всё написано.
Монолог ругался, что у него не хватает прав на запись. И правильно ругался, потому что писать логи приложения в /var/log - это очень так себе идея.

А сама эта аминязданпапанах ничего не ругается, потому что её автор - дебил.
Вот за такое
if (false === @file_put_contents($path, $content)) {

хочется очень долго бить по пальцам чем-нибудь тяжелым.
чтобы никогда больше в голове даже мысль не возникала писать такой высокоинтеллектуальный код.
который, как раз и занимается тем, что скрывает реальную причину ошибки
Которая, скорее всего, опять "нет прав". Только уже не для логов, а для собственно создаваемого файла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы