PHP中的外部程序

PHP中的外部程序,php,process,youtube,exec,wget,Php,Process,Youtube,Exec,Wget,我正在尝试用PHP制作一个简单的脚本,下载youtube的视频,第一刻我尝试了在web上找到的一些类,但没有成功,所以我决定使用youtube dl程序,并将其从调用到我的脚本 最大的问题是:显然,当页面加载到浏览器中并且下载被中断时,进程被终止 最奇怪的是,如果我像这样执行脚本:php page.php,脚本工作得很好,但浏览器不工作 我注意到wget命令也有同样的问题,进程也被终止了 代码类似于: <?php exec("youtube-dl -o /var/www/YT/vide

我正在尝试用PHP制作一个简单的脚本,下载youtube的视频,第一刻我尝试了在web上找到的一些类,但没有成功,所以我决定使用youtube dl程序,并将其从调用到我的脚本

最大的问题是:显然,当页面加载到浏览器中并且下载被中断时,进程被终止

最奇怪的是,如果我像这样执行脚本:php page.php,脚本工作得很好,但浏览器不工作

我注意到wget命令也有同样的问题,进程也被终止了

代码类似于:

<?php
  exec("youtube-dl -o /var/www/YT/video.flv https://youtube....");
?>



*youtube dl和wget都位于脚本的同一目录中,我也尝试将输出重定向到/dev/null和fork process mas,但均未成功。

我将尝试在后台执行它

<?php
  exec("youtube-dl -o /var/www/YT/video.flv https://youtube....  > /dev/null 2>&1 &");
?>


如果这样做行得通,那么所发生的事情是,您的php脚本在youtube dl

之前结束。您的Web服务器用户是否有足够的权限写入/var/www/YT/中的文件?顺便说一句,你确实意识到你可能正在破坏你下载的文件的版权?你已经
chmod 775/var/www/YT/
了吗?我现在很尴尬,为了测试,我为文件夹设置了777权限,工作得很好,非常感谢。不知道/var/www/YT/目录是否在生产环境中,但将其设置为0777是一个真正的安全威胁。最好将所有者更改为webserver用户。您的意思是执行的程序太长,PHP超时。这应该不是问题,因为执行程序所需的时间不计入执行时间限制;只有实际执行PHP代码所需的时间才能用于该目标。因此,youtube dl程序可能需要多长时间,PHP脚本仍将运行。请看感谢Serpes,问题并不完全在于此(正如我在上面的评论中所说),但脚本非常有帮助。
<?php
  exec("youtube-dl -o /var/www/YT/video.flv https://youtube....  > /dev/null 2>&1 &");
?>