通过PHP exec()递归wget只获取第一页?

通过PHP exec()递归wget只获取第一页?,php,exec,wget,Php,Exec,Wget,以下wget命令可以很好地递归地对整个域进行爬网,将下载的文件保存在单个文件夹中,然后将其全部删除: wget --delete-after -r -nd http://www.example.com/ 当从命令行运行时,这将非常有效。当通过PHP的exec(或system,shell_exec,passthru)运行时,如下所示,它只获取索引页面,但似乎没有深入到索引页面: exec('wget --delete-after -r -nd http://www.example.com/');

以下wget命令可以很好地递归地对整个域进行爬网,将下载的文件保存在单个文件夹中,然后将其全部删除:

wget --delete-after -r -nd http://www.example.com/
当从命令行运行时,这将非常有效。当通过PHP的exec(或system,shell_exec,passthru)运行时,如下所示,它只获取索引页面,但似乎没有深入到索引页面:

exec('wget --delete-after -r -nd http://www.example.com/');
如果这是一个权限问题,我想它也不会下载索引页面,但它确实下载了(当我去掉“--delete after”时会很明显)


这里没有robots.txt,如果我通过echo,也不会显示输出。我遗漏了什么?

这似乎毕竟是一个权限问题,因为添加--directory前缀param修复了它

wget --delete-after -q -r -nd -P /home/example.com/public_html/tmp/ http://www.example.com

我将前缀设置为php fpm肯定可以访问的目录,而之前我坦白地说,我不知道它临时将文件保存到哪里(“.”是默认目录,但它会在哪里?。

如果将空数组作为第二个参数,并在执行后转储它,那么数组中会有什么?它是输出容器。它停止有什么原因吗?数组是空的:array(0){},如果传递第三个参数,执行后它的值是多少?另外,您是否可以尝试将-v添加到wget参数并在此之后转储输出?这将导致数组(0){}和int(8)。如果我添加-O/some/file/nginx/can/access.txt,它会更深一层,但再一次,它不会更进一步。这不是在*nix下运行的,是吗?