Добавить путь к переменной среды PATH для www-данных

Я пытаюсь добавить /usr/local/texlive/2012/bin/x86_64-linux в среду PATH для моего пользователя Apache (www-data) после установки TeX Live 2012 вручную.

Я отредактировал свой /etc/environment

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"

, чтобы включить этот путь в мою общесистемную переменную PATH для всех пользователей.

Однако, если я выполню sudo -u www-data printenv PATH, я только получаю:

# sudo -u www-data printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Я не могу понять источник этой проблемы и ценю любую помощь.

6
задан 21 October 2012 в 19:31

3 ответа

Вашему /etc/environment не нужен оператор export перед парами ключ / значение. Как указано в вики :

Это не файл сценария, а, скорее, состоит из выражений присваивания, по одному на строку.

См. этот другой вопрос о том, как работает формат.

0
ответ дан 21 October 2012 в 19:31

https://help.ubuntu.com/community/EnvironmentVariables в первой заметке «Общесистемные переменные среды» ответит на ваш вопрос.

0
ответ дан 21 October 2012 в 19:31

У меня была подобная проблема, где я нуждался в определенном экспорте для www-данных для использования при выполнении исполнительной команды PHP и сумел починить это решение:

  • Править /etc/apache2/envvars:

    sudo nano /etc/apache2/envvars
    
    • Добавьте свой экспорт в конец файла и сохраните его.

      export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"
      
    • Apache перезапуска:

      sudo service apache2 restart
      

Теперь, если Вы выполняете следующий PHP

<?php
    $descriptorspec = array(
       0 => array("pipe", "r"),  // stdin
       1 => array("pipe", "w"),  // stdout
       2 => array("pipe", "w"),  // stderr
    );
    $process = proc_open('env', $descriptorspec, $pipes, dirname(__FILE__), null);
    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    var_dump($stdout);
?>

Необходимо видеть экологический путь, как установлено в файле. Кажется, что апачские команды икры под www-данными с помощью содержания того файла конфигурации только а не от и bash.bashrc и т.д. вводят файлы? Я не Могу сказать наверняка, потому что я плохо знаком с Linux.

Не уверенный, если это точно, чего Вы пытаетесь достигнуть, но надеяться, что это помогает.

9
ответ дан 21 October 2012 в 19:31

Другие вопросы по тегам:

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