просто для удовольствия Я пытаюсь сделать wget загрузки из php cli (/usr/bin/php -a), и он работает:
php > 'wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html';
php > // a HTML file is downloaded and its content is placed into /Users/user/path/to/file.html
Однако, когда я пытаюсь сделать то же самое с PHP-скрипта, он не работает:
<?php
'wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html';
// After requesting the script from the browser and after the script is executed, the file doesn't exist on the specified path
Я хотел бы сказать, что пользователь, который выполняет apache и, следовательно, скрипты на стороне сервера PHP, такой же, как пользователь, который выполняет команду php из командной строки (так что я думаю, что это не должно быть проблемой разрешений).
Почему, если я использую скрипт.php и вызываю wget внутри скрипта, файл не сохраняется?
Спасибо за внимание!
PS: Пожалуйста, не говорите мне, что я могу использовать завиток для такой задачи, я знаю, что могу, мне просто интересно узнать, как я могу сделать что-то подобное, не используя PHP-инструменты,
используйте полный путь к wget
, так как демон не запускает .bash_profile
.
'/opt/local/bin/wget -q -nd -O /Users/user/path/to/file.html http://host.com/some_file.html';
Кстати, нет необходимости скрывать /
в командах оболочки.
Оператор backtick запускает команду оболочки и возвращает результат из команды оболочки.
В этой ситуации, просто регистрируя (или если вам нужно, эхо-сигнал), результат, вероятно, покажет ошибку. Например:
$result = 'wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html';
trigger_error($result, E_USER_NOTICE);
wget
отсутствует в$PATH
пользователя apache?