Apache: SetEnv — установить переменную окружения

Автор: | 07/22/2016
 

apache_logoТребуется задать переменную окружения для пользователя www-data, что бы использовать её в PHP-скриптах.

Попытки сделать это через файлы /etc/apache2/envvars, /etc/profile.d/music.sh и /etc/environment результата не принесли.

Вместо этого — можно использовать модуль mod_env и директиву SetEnv.

Например:

<VirtualHost *:80>

        SetEnv SLIM_MODE "dev"

        ServerName music-uk.domain.tld
        ServerAlias music-de.domain.tld

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/vhosts/music.domain.tld

        ErrorLog ${APACHE_LOG_DIR}/music/music.domain.tld-error.log
        CustomLog ${APACHE_LOG_DIR}/music/music.domain.tld-access.log combined

        <Directory /var/www/vhosts/music.domain.tld>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                IndexOptions Charset=UTF-8
        </Directory>

</VirtualHost>

И скрипт для проверки:

<?php

echo "check\n";

if(isset($_SERVER['SLIM_MODE']) && $_SERVER['SLIM_MODE'] == "staging")
{
        $location = "staging";
}
if(isset($_SERVER['SLIM_MODE']) && $_SERVER['SLIM_MODE'] == "production")
{
        $location = "live";
}
if(isset($_SERVER['SLIM_MODE']) && $_SERVER['SLIM_MODE'] == "dev")
{
            $location = "dev";
            echo "DEV\n";
            var_dump($location);
}

?>

Проверяем:

# curl music-uk.domain.tld/var.php
check
DEV
string(3) "dev"