Почему команда оболочки wget backticks работает в PHP CLI, а не в скрипте PHP?

0

просто для удовольствия Я пытаюсь сделать 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-инструменты,

  • 0
    Есть ли ошибки в журнале PHP?
  • 0
    Может быть, wget отсутствует в $PATH пользователя apache?
Показать ещё 5 комментариев
Теги:
wget
shell-exec

2 ответа

1

используйте полный путь к wget, так как демон не запускает .bash_profile.

'/opt/local/bin/wget -q -nd -O /Users/user/path/to/file.html http://host.com/some_file.html';

Кстати, нет необходимости скрывать / в командах оболочки.

  • 0
    Спасибо за предложение!
0

Оператор backtick запускает команду оболочки и возвращает результат из команды оболочки.

В этой ситуации, просто регистрируя (или если вам нужно, эхо-сигнал), результат, вероятно, покажет ошибку. Например:

$result = 'wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html';

trigger_error($result, E_USER_NOTICE);
  • 0
    Это не помогло, $ result - пустая строка. Я нашел ошибку, пожалуйста, проверьте мой комментарий :)
  • 0
    Если это ошибка пути $ result, должна быть строка, содержащая «sh: wget: команда не найдена»
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню