带有PHP的FFmpeg导致内部服务器错误

带有PHP的FFmpeg导致内部服务器错误,php,ffmpeg,Php,Ffmpeg,我有一个PHP脚本,它调用exec()来使用ffmpeg转换视频文件。该脚本适用于较小的文件,但较大的文件(通常约20MB)在转换运行约45秒后会产生500个内部服务器错误 最大执行时间设置为600秒(10分钟),最大发布和上载大小设置为1000 MB。服务器基于Unix,未在安全模式下运行 虽然这个问题只发生在较大的大小上,但我甚至不确定它是否是文件大小的问题。脚本将通过一个12.6MB的MOV文件,但将失败一个11MB的MP4文件 下面是我的脚本中的exec()行: exec('ffmpeg

我有一个PHP脚本,它调用exec()来使用ffmpeg转换视频文件。该脚本适用于较小的文件,但较大的文件(通常约20MB)在转换运行约45秒后会产生500个内部服务器错误

最大执行时间设置为600秒(10分钟),最大发布和上载大小设置为1000 MB。服务器基于Unix,未在安全模式下运行

虽然这个问题只发生在较大的大小上,但我甚至不确定它是否是文件大小的问题。脚本将通过一个12.6MB的MOV文件,但将失败一个11MB的MP4文件

下面是我的脚本中的exec()行:

exec('ffmpeg -y -i '.escapeshellarg($uploadFile).' -vcodec libx264 -ab 128k -ac 2 -b 640k -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -maxrate 10M -bufsize 10M -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 '.$convertFile);

谢谢

我在使用mod_fcgid和Apache时遇到过类似的PHP问题和超时问题。mod_fcgid似乎对运行很长时间的脚本有问题,而且无论更改超时值的数量有多大,我仍然无法让它一直保持良好的性能

我找到了一些解决方法:

  • 不要使用PHP脚本-使用PHP CLI和cron作业
  • 不要在你用来编码的站点上使用mod_fcgid,使用CGI 包装器,甚至mod_php
  • 我正在编辑这篇文章,因为我发现了一组非常有用的链接,它们解决了我的问题:

    我补充说:

    <IfModule !mod_fastcgi.c>
        AddHandler fcgid-script fcg fcgi fpl
        IdleScanInterval 10800
        BusyScanInterval 10800
        ZombieScanInterval 60
    </IfModule>
    

    在相关的
    中的httpd.conf中,重新启动apache,超时已停止。

    我在使用mod_fcgid和apache时遇到过类似的PHP问题和超时。mod_fcgid似乎对运行很长时间的脚本有问题,而且无论更改超时值的数量有多大,我仍然无法让它一直保持良好的性能

    我找到了一些解决方法:

  • 不要使用PHP脚本-使用PHP CLI和cron作业
  • 不要在你用来编码的站点上使用mod_fcgid,使用CGI 包装器,甚至mod_php
  • 我正在编辑这篇文章,因为我发现了一组非常有用的链接,它们解决了我的问题:

    我补充说:

    <IfModule !mod_fastcgi.c>
        AddHandler fcgid-script fcg fcgi fpl
        IdleScanInterval 10800
        BusyScanInterval 10800
        ZombieScanInterval 60
    </IfModule>
    

    在相关的
    中输入我的httpd.conf,重新启动apache,超时已停止。

    长时间运行的作业应在后台运行。旧版本的ffmpeg存在漏洞,请确保您运行的是最新版本。尝试在终端内部运行相同的命令,不使用php。它在终端中运行良好。即使抛出内部错误,转换仍然有效;它只是不调用exec()后面的任何行。我可以在抛出错误后检查FTP,目录中会有一个工作视频文件。长时间运行的作业应该在后台运行。旧版本的ffmpeg存在漏洞,请确保您运行的是最新版本。尝试在终端内部运行相同的命令,不使用php。它在终端中运行良好。即使抛出内部错误,转换仍然有效;它只是不调用exec()后面的任何行。我可以在抛出错误后检查FTP,目录中将有一个工作视频文件。