Добавление к переменной окружения $ PATH в PHP-скрипте - PullRequest
5 голосов
/ 01 августа 2011

У меня есть PHP-скрипт, который использует wget для загрузки некоторых изображений.Однако wget был установлен с использованием Homebrew , поэтому он недоступен для пользователя, выполняющего сценарий PHP.Когда я запускаю exec('echo $PATH'), я не получаю каталог /usr/local/bin, который содержит wget.Как добавить /usr/local/bin к пути среды, чтобы скрипт PHP мог найти wget?

Обновление: Я забыл упомянуть причину, по которой не могу указать точное местоположениепотому что расположение может отличаться в зависимости от того, на какой машине запущен этот скрипт.

Решение:

Это то, с чем я закончил:

Ответы [ 2 ]

9 голосов
/ 01 августа 2011

В порядке предпочтения:

  1. Вы можете просто указать полный путь /usr/local/bin/wget при вызове подпроцесса. Это, наверное, самый простой и лучший подход.
  2. Вы можете использовать proc_open вместо exec, что позволяет передавать переменные среды в качестве аргумента.
  3. Вы можете использовать putenv для изменения текущей среды (которая будет унаследована подпроцессами).
1 голос
/ 01 августа 2011

В PHP есть волшебная глобальная переменная под названием $_ENV, которая представляет собой массив, содержащий все переменные среды (в контексте процесса, в котором выполняется скрипт PHP, например, ваш веб-сервер).

см. http://php.net/manual/en/reserved.variables.environment.php

...