无法获取shell_exec来下载文件

时间:2011-05-19 10:50:37

标签: php bash

我有一个名为Aria2c的ubuntu的多线程cli下载器。

我一直在尝试使用php脚本运行aria2c并使用shell_exec下载文件,但我似乎无法让它工作。最终我计划在页面上有一个输入框,我可以在其中输入链接,然后aria会下载它。

这是我提出的代码(现在我手动输入链接):
<?php $dl = shell_exec('aria2c -d /home/user/ www.downloadlink.com'); ?>

请注意,我指定的aria2c命令在shell中运行良好;我试图下载的目录设置为'777'。

我很困惑为什么它不起作用,有什么想法?

PS:我更喜欢使用咏叹调而不是替代品,因为它是多线程的,它支持cookie。

2 个答案:

答案 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