2013-08-16 4 views
1

У меня странная ситуация, которая только что произошла. FFMPEG больше не работает с PHP, а будет из командной строки.FFMPEG работает из командной строки, но не PHP

Вот именно то, что команда:

ffmpeg -i ../../uploads/ee78d5deb564901626067cc0008456ed.mp3 -ab 96k -y ../../uploads/mp3/ee78d5deb564901626067cc0008456ed_6203688.mp3 

Как это выполняется в PHP скрипт:

if(! exec("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")){ 
    echo 'ffmpeg failed'; 
} 

Эта команда сделала работу, но не больше делает. Я недавно обновил plesk, но я очень сомневаюсь, что это повлияло на это. Единственное, что, по моему мнению, может повлиять на это, что я недавно сделал, - это загрузить файл в поддомен. Таким образом, каталог, в котором файл находится и хранится в команде, находится в каталоге вне корня документа. Тем не менее, функция move_uploaded_file работает, и я изменил open_basedir в PHP ini на корень веб-пространства.

+0

Вы можете попытаться вывести ошибку с помощью $ error = array(); exec («ваша команда здесь», ошибка $); var_dump ($ ошибка); – javijuol

ответ

0

хвост -f/вар/Журнал/apache2/error_log

и позволяет нам знать, что вы там видите ... Adjust для вашей платформы ...

это для лампы (OpenSUSE)

0

Вы можете попробовать использовать команду system(). Это вернет вам ответ от сервера

system("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3") 

если FFmpeg не поддерживается текущей версией PHP он будет возвращать вам ошибку.

ИЛИ

вы можете изменить вашу команду, чтобы получить FFmpeg с правильным путем. В моем случае это работает, как показано ниже код

exec("/usr/local/bin/ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")) 
Смежные вопросы