2013-02-13 4 views
0

Следующая Wget команда делает хорошую работу по рекурсивно ползет полный домен, сохранение загруженных файлов в одной папке, а затем удалить все:Рекурсивный wget через PHP exec() выбирает только первую страницу?

wget --delete-after -r -nd http://www.example.com/ 

При запуске из командной строки, это работает отлично. При запуске с помощью Exec PHP (или система, shell_exec, PassThru) следующим образом, он получает только индексную страницу, но, кажется, не идти не глубже, чем:

exec('wget --delete-after -r -nd http://www.example.com/'); 

Если бы это была проблема с разрешениями, я думаю, он также не будет загружать индексную страницу, но это происходит (заметно, когда я вынимаю «-delete-after»).

Не задействовано приложение robots.txt, и если вы пройдете его через эхо, вывести его не будет. Что мне не хватает?

+0

если вы поместили пустой массив в качестве второго параметра и выгрузили его после выполнения, что бы там было в массиве? Это выходной контейнер. Есть ли в этом причина, почему она останавливается? – Alexey

+0

Массив выходит пустым: array (0) {} – redburn

+0

, и если вы передадите третий параметр, каково его значение после выполнения? Кроме того, вы можете попробовать добавить -v к параметрам wget и выгрузить результат после этого? – Alexey

ответ

0

Кажется, что проблема была связана с разрешениями, поскольку добавление параметра -directory-prefix param исправлено.

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

Я установить префикс в каталог, PHP-FPM может, конечно, доступ, в то время как раньше я откровенно понятия не имел, где он спасал файлы временно («» является каталогом по умолчанию, но где бы что быть?).

Смежные вопросы