#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
файла.
Ответ №2:
Я видел PUTENV
и GETENV
использовал json_***
такие функции, как:
$my_array= array( 'a'=>14, 'b'=>5);
PUTENV("my_namee=".json_encode($my_array));
.....
$var = json_decode(GETENV("my_namee"));