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