.htaccess SetEnv устанавливает переменную PHP $_SERVER во вложенный массив

#php #apache #.htaccess #setenv

#php #apache #.htaccess #setenv

Вопрос:

Я использую PHP 5.6.22 и Apache 2.4.18. У меня есть $_SERVER переменная, которую я хочу установить как вложенный массив.

Чтобы пояснить, в начале моего PHP-скрипта я хочу, $_SERVER['key'] чтобы для него был установлен двухуровневый массив, как показано ниже:

 $_SERVER['key'] = array('index' => array('sub_index' => 'some_value'))
  

Возможно ли это? Заранее спасибо за вашу помощь.

Комментарии:

1. Переменные среды доступны через $_ENV супер глобальную переменную, а не через $_SERVER .

2. что такое index и sub_index? Я полагаю, вы не хотите просто поместить код, который вы только что написали, в начало вашего скрипта?

3. Нет, мне нужен не этот массив дословно, а массив именно такой структуры. Точные имена индексов не должны иметь значения

4. @arkascha SetEnv устанавливает переменные в $_SERVER. Я активно наблюдаю это в своем скрипте, и фреймворк Magento построен на этой предпосылке

5. Я бы сказал, что это зависит от того, как вы интегрируете php в среду apache. Использование этого сделает ваш код непереносимым.

Ответ №1:

Создайте файл с именем myenv.php с помощью этого кода:

 <?php
$_SERVER['key'] = array('index' => array('sub_index' => 'some_value'));
?>
  

Затем добавьте эту строку в корневой каталог вашего сайта .htaccess:

 php_value auto_prepend_file myenv.php
  

Теперь эти данные будут заполняться $_SERVER перед загрузкой любого .php файла.

Подробнее о auto_prepend_file

Ответ №2:

Я видел PUTENV и GETENV использовал json_*** такие функции, как:

 $my_array= array( 'a'=>14, 'b'=>5);
PUTENV("my_namee=".json_encode($my_array));

.....
$var = json_decode(GETENV("my_namee"));