Объявление глобальной переменной с помощью php.ini

Можно ли сохранить переменные в файле php.ini. Подобным образом мы работаем с web.config в .net. Мне нравится сохранять переменную типа флага в php.ini и использовать ее для разных проектов.

Невозможно установить переменные уровня пользователя в простой файл php.ini (или эквивалентные .htaccess equivilents). Есть некоторые модули PECL, которые позволяют это, например hidef ( http://pecl.php.net/package/hidef ), хотя они должны быть установлены при каждой используемой вами установке.

Включение (или предварительный) файла с файлом auto_prepend_file вполне возможно – хотя это было бы на каждом запросе PHP.

Часто делается настройка переменной среды как части процесса веб-сервера, которую можно прочитать с PHP. В Apache это довольно просто, с модулем SetEnv .

SetEnv PRODUCTION_SERVER 1 

И доступ к нему в PHP:

 if ($_ENV['PRODUCTION_SERVER']) {...} // or getenv('PRODUCTION_SERVER') 

Неа.

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

Однако, вероятно, более прозрачно просто явно включать / требовать соответствующий файл.

Вы посмотрели на get_cfg_var() ?

Мне нужно было сделать что-то подобное, и это удалось сделать для меня.

Один из методов, который я нашел полезным для передачи ограниченного числа глобальных переменных сценарию начальной загрузки, заключается в использовании директивы SetEnv в файле .htaccess. Преимущество состоит в том, что указанная вами переменная будет доступна для любого скрипта в этом каталоге, плюс любые скрипты в дочерних каталогах под ним.

Вы можете использовать переменную SetEnv с расположением файла конфигурации, например:

в .htaccess:

 SetEnv init_path /home/hendepher/TestApp/init/init.php 

В вашем .php scipt:

 <?php if(!getenv('init_path')) throw new Exception('Must set init_path in .htaccess'); require_once getenv('init_path'); . . . ?> 

Если у вас есть тестовый каталог, требующий различной инициализации глобальных переменных, просто добавьте еще один файл .htaccess в тестовый каталог:

 SetEnv init_path /home/hendepher/TestApp/init/testing_init.php 

Выполнение этого способа, в отличие от использования директивы auto_prepend_file, заключается в том, что ваш глобальный сценарий конфигурации не запускается всеми приложениями php на вашем сервере: кому-то это может не понадобиться.

Я не думаю, что это хорошее место для хранения переменных. php.ini предназначен для хранения конфигурации самого PHP, а не ваших приложений. Вы должны рассмотреть возможность включения общих переменных в файл .inc и включение этого.

Вы считали hidef ?

Разрешить определение пользовательских констант в простых ini-файлах, которые затем обрабатываются как внутренние константы без каких-либо обычных штрафов за производительность.

Принятые ответы также работали на меня, с одним изменением.

Я не тестировал это на более ранних версиях, но в моей среде (php 5.4.22) это не отображается в $ _ENV, а скорее в $ _SERVER.

В моем файле .htacess:

 SetEnv PRODUCTION_SERVER 0. 

Мой PHP-код:

 $production="PRODUCTION"; if (!isset($_SERVER['PRODUCTION_SERVER']) || $_SERVER['PRODUCTION_SERVER'] != 1){ $production="DEVELOPMENT"; }