以下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传递它,则不会显示输出。我错过了什么?
答案 0 :(得分:0)
毕竟这似乎是一个权限问题,因为添加了--directory-prefix param修复了它。
wget --delete-after -q -r -nd -P /home/example.com/public_html/tmp/ http://www.example.com
我将前缀设置为php-fpm肯定可以访问的目录,而之前我坦率地不知道它在哪里暂时保存文件('。'是默认目录,但那会是什么?)。