我有一个名为Aria2c的ubuntu的多线程cli下载器。
我一直在尝试使用php脚本运行aria2c并使用shell_exec下载文件,但我似乎无法让它工作。最终我计划在页面上有一个输入框,我可以在其中输入链接,然后aria会下载它。
这是我提出的代码(现在我手动输入链接):
<?php $dl = shell_exec('aria2c -d /home/user/ www.downloadlink.com'); ?>
请注意,我指定的aria2c命令在shell中运行良好;我试图下载的目录设置为'777'。
我很困惑为什么它不起作用,有什么想法?
PS:我更喜欢使用咏叹调而不是替代品,因为它是多线程的,它支持cookie。答案 0 :(得分:1)
检查PHP是否在safe_mode中运行。如果安装了safe_mode,shell_exec
将无效。
编辑:aria2c没有引用完整路径。像这样引用它:shell_exec('/path/to/aria2c -d /home/user/ www.downloadlink.com')
有效。
答案 1 :(得分:0)
我会假设您通过Web服务器运行PHP。在这种情况下,Web服务器不太可能有权写入用户的主目录:Apache使用受限用户的凭据作为守护进程运行。此外,Apache中的PATH
env变量不一定与用户的PATH相同。最后但并非最不重要的是,您不检查返回值或脚本输出。
尝试这样的事情:
<?php
exec('/path/to/aria2c -d /tmp www.downloadlink.com', $output, $return_var);
var_dump($output, $return_var);
?>
您可以通过以下方式获取aria2c的完整路径:
which aria2c