повторно инициализируйте переменную среды в масштабе всей системы в Linux

Вы можете добавить к всем объектам простую функцию forEach , чтобы вы могли автоматически прокручивать любой объект:

Object.defineProperty(Object.prototype, 'forEach', {
    value: function (func) {
        for (var key in this) {
            if (!this.hasOwnProperty(key)) {
                // skip loop if the property is from prototype
                continue;
            }
            var value = this[key];
            func(key, value);
        }
    },
    enumerable: false
});

Для тех людей, которым не нравится " для ... в "- метод:

Object.defineProperty(Object.prototype, 'forEach', {
    value: function (func) {
        var arr = Object.keys(this);
        for (var i = 0; i < arr.length; i++) {
            var key = arr[i];
            func(key, this[key]);
        }
    },
    enumerable: false
});

Теперь вы можете просто позвонить:

p.forEach (function(key, value){
    console.log ("Key: " + key);
    console.log ("Value: " + value);
});

Если вы не хотите получить конфликты с другими forEach-методами, которые вы можете назвать им с вашим уникальным именем.

5
задан Minras 11 February 2011 в 23:04
поделиться

3 ответа

Переменные среды наследованы процессами в Unix. Файлы в/etc/profile.d только выполняются (в текущей оболочке, не в подоболочке), когда Вы входите в систему. Просто изменение значения, тут же перезапускающего процесс, не обновит среду.

Возможные меры:

  • зарегистрируйтесь/входить в систему, затем запустите апача
  • получите файл: # . /etc/profile.d/foo.sh, затем апач перезапуска
  • получите файл в апачском init сценарии

Также необходимо удостовериться это /etc/profile.d/ получен, когда Apache запускается init вместо себя.

Лучшая фиксация могла бы также зависеть от распределения, которое Вы используете, потому что они используют различные схемы конфигурации.

6
ответ дан 14 December 2019 в 13:51
поделиться

Можно использовать SetEnv в файлах конфигурации (/etc/httpd/conf.d / *.conf, .htaccess...). Дополнительно необходимо смочь определить их в/etc/sysconfig/httpd (на ОСНОВАННОМ НА ОБ/МИН distribs) и экспортировать их (примечание: не протестированный).

Примечание: меня не удивило бы, если бы некоторые дистрибутивы пытались довольно трудно скрыться как можно больше, что касается системной конфигурации, от публично доступного сервиса, такого как Apache. И если они не делают, они могли бы начать делать это в будущей версии. Следовательно я советую Вам делать это явно. Если необходимо совместно использовать такую установку между Apache и оболочками, Вы могли бы попытаться получить/etc/profile.d/yourprofile.sh от/etc/sysconfig/httpd

0
ответ дан 14 December 2019 в 13:51
поделиться

Файлы конфигурации Apache позволяют Вам устанавливать переменные среды на на основание сайта.

Таким образом, если Ваш веб-сервер служит страницам от двух логических сайтов, можно было установить ту же переменную среды по-другому для каждого сайта и таким образом заставить PHP реагировать по-другому.

Посмотрите Apache mod_env для деталей:

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

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