Вопрос по apache, php – PHP: можно установить константы в файле php.ini по умолчанию

5

Я хочу иметь константу (строку), доступную для всех PHP-скриптов на сервере.

Согласно сhttp: //php.net/manual/en/function.parse-ini-file.ph это довольно легко, если вы анализируете дополнительный файл .ini, однако я не хочу анализировать дополнительный файл, я хочу установить свою константу в глобальном php.ini, не анализируя что-либо в скриптах. (На самом деле в этом весь смысл, потому что мне нужна константа, чтобы найти материал для включения / parse / etc: когда я знаю, где будет находиться этот дополнительный файл .ini, он мне больше не нужен!)

Просто изобретать новую константу в php.ini, а затем пытаться получить к ней доступ с помощью ini_get (), не работает, есть ли другой способ?

Я сам компилирую Apache и PHP, поэтому я мог бы также установить константу во время компиляции и / или использовать Apache-константы, если это необходимо.

Ваш Ответ

3   ответа
7

auto_prepend_file скрипт в вашем PHP ini, чтобы сделать это, так как он будет запущен до любого из ваших пользовательских скриптов:

Указывает имя файла, который автоматически анализируется перед основным файлом. Файл включается так, как если бы он был вызван с функцией 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-сценариям точный корень документа. Я обсуждал это в блог до.

Не совсем то, что я хотел, но это работает, спасибо. Robby75
К сожалению, это так близко, как вы собираетесь получить. То, что вы хотите, на самом деле не возможно): Treffynnon
0

что вы сказали, я думаю, вы обнаружите, что нечто подобное уже будет доступно в $ _ SERVER, в частности "DOCUMENT_ROOT".

Точно, мне нужно что-то очень похожее на DOCUMENT_ROOT (но не DOCUMENT_ROOT, в чем весь смысл этого вопроса) Robby75
@ Robby75 - это именно то, что я использую в своем ответе для решения на своем промежуточном сервере: Stackoverflow.com / а / 10751734/461813 Treffynnon
0

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

Путь для включения содержит каталоги, а не файлы. David Spector

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