Я хочу иметь константу (строку), доступную для всех PHP-скриптов на сервере.
Согласно http://php.net/manual/en/function.parse-ini-file.php, это довольно просто, если вы разбираете дополнительный файл .ini, однако я не хочу разбирать дополнительный файл, я хочу чтобы установить мою константу в глобальном php.ini без необходимости разбирать что-либо в скриптах. (На самом деле это весь смысл, потому что мне нужна константа, чтобы найти материал для включения / разбора / и т. Д .: Когда я знаю, где будет этот дополнительный файл .ini, мне он больше не нужен!)
Просто изобретать новую константу в php.ini, а затем пытаться получить к ней доступ с помощью ini_get () не работает, есть ли другой способ?
Я сам компилирую Apache и PHP, поэтому я мог бы также установить константу во время компиляции и / или использовать Apache-константы, если это необходимо.
Вы можете использовать скрипт PHP auto_prepend_file
в своем PHP-файле для выполнения этого, поскольку он будет запущен до любого из ваших сценариев пользовательской земли:
Задает имя файла, который автоматически анализируется перед основным файлом. Файл включен, как если бы он был вызван с помощью функции require, поэтому используется include_path.
Таким образом, вы можете добавить строку ini, например:
auto_prepend_file="/home/user/script.php"
В /home/user/script.php:
define('CONSTANT_NAME', 'your nice value here');
Теперь в ваших PHP-скриптах вы можете получить доступ к CONSTANT_NAME
где бы вы ни находились, поскольку он доступен во всех скриптах PHP.
Я использую эту технику на моем промежуточном сервере, который использует массовый виртуальный хостинг на основе mod_rewrite, поэтому я могу дать своим PHP-скриптам правильный корень документа. Я уже обсуждал это в блоге .
Из того, что вы сказали, я думаю, вы обнаружите, что уже будет уже что-то подобное в $ _SERVER , в частности «DOCUMENT_ROOT».
Просто. Создайте файл xxx.php, где вы определяете константу и добавляете этот файл в глобальный include_path в php.ini. Я хотел бы добавить, что сохранение таких глобальных констант или переменных не является рекомендуемым способом работы, так как вы можете забыть, откуда возникают константы, и не делает ваши приложения очень портативными и явными для других разработчиков.