@Rheu

Скачка файлов на сервер с удаленного хоста. Как передать параметр из php-скрипта в wget?

Нужно ежедневно скачивать на свой хост файлы по ссылке https://domain.zone/files/file20211013.zip
Где 20211013 - текущая дата.

Решил реализовать через wget по cron:
<?php
exec ('wget -O todayfile.zip https://domain.zone/files/file20211013.zip');
?>

Но не получается менять дату в этом url - сформировать ссылку на имя файла с датой получилось, но застопорился на передаче ее как параметра в wget через exec().

<?php
$fileD = "https://domain.zone/files/file".date("Ymd").".zip";
print ($fileD);
exec ('wget -O todayfile.zip -x $fileD');
?>

Прошу сильно не ругать за вопрос, не программист, и с php вообще не знаком.
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Буквальный ответ на этот вопрос, который будет полезен тем, кого привлечёт заголовок вопроса - escapeshellarg()
Все параметры, которые передаются в команды шелл, должны в обязательном порядке обрабатываться этой функцией.

Решение смешной проблемы в текущем коде - надо всего лишь использовать двойные кавычки вместо одинарных.
$fileD = escapeshellarg("https://domain.zone/files/file".date("Ymd").".zip");
exec ("wget -O todayfile.zip $fileD");

Для решения же исходной задачи, разумеется, не нужен никакой РНР. Использовать для этих целей РНР - это все равно что сначала завернуть котлету в целлофановый пакет, а потом её есть. Ну ведь wget - это уже шелловая команда, и запускать её надо напрямую.

/usr/bin/wget -O /path/todayfile.zip "https://domain.zone/files/file$(date '+%Y%m%d').zip"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы