我正在尝试创建一个Youtube下载器,其灵感来自https://apple.stackexchange.com/questions/321650/downloading-youtube-music-videos/321668?noredirect=1#comment409948_321668的Nimesh Neema答案。它使用youtube-dl
命令。
youtube.php
<?php
ini_set("display_errors", 1);
ini_set("track_errors", 1);
ini_set("html_errors", 1);
error_reporting(E_ALL);
$command = '/usr/local/bin/youtube-dl https://www.youtube.com/watch?v=b91ovTKCZGU --no-check-certificate -f mp4 -o /Library/WebServer/Documents/files/test.mp4';
$command1 = 'sleep 2; echo "hi"';
shell_exec($command);
echo '<pre>';
passthru($command);
echo '</pre>';
?>
当通过网络浏览器被指控时,没有任何反应。但如果我在终端中运行php ./youtube.php
,我会得到以下内容并创建视频:
<pre>[youtube] b91ovTKCZGU: Downloading webpage
[youtube] b91ovTKCZGU: Downloading video info webpage
[youtube] b91ovTKCZGU: Extracting video information
[download] /Library/WebServer/Documents/files/test.mp4 has already been downloaded
[download] 100% of 10.09MiB
如果这不够奇怪。如果我将要执行的命令更改为/usr/bin/touch /Library/WebServer/Documents/files/test.mp4
,即使通过Web浏览器访问,也会创建该文件。
我的问题:当通过浏览器访问并成功创建视频时,如何让PHP脚本执行命令?
如果您要进行downvote请在评论中解释原因,以便我可以根据需要编辑和调整问题
更新:我将脚本转移到了我的服务器。它跑得很好。这似乎与我的配置有关。