我有一个刚刚发生的奇怪情况。 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
函数有效,我已将PHP ini中的open_basedir
更改为webspace根。
答案 0 :(得分:0)
tail -f / var / log / apache2 / error_log
让我们知道您在那里看到的内容......根据您的平台进行调整......
这是针对灯(opensuse)
答案 1 :(得分:0)
您可以尝试使用system()命令。它会返回来自服务器的响应
system("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")
如果当前版本的php不支持ffmpeg,它将返回错误。
OR
您可以修改命令以获取具有正确路径的ffmpeg。就我而言,它的工作原理如下代码
exec("/usr/local/bin/ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3"))