Разное

Config php: Конфигурация сайта config.php — Полная документация системы управления сайтами DIAFAN.CMS

03.05.2023

PHP: Файл конфигурации — Manual

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther

Submit a Pull Request Report a Bug

Файл конфигурации (php.ini) считывается при запуске PHP. Для версий серверных модулей PHP это происходит только один раз при запуске веб-сервера. Для CGI и CLI версий это происходит при каждом вызове.

Поиск php.ini производится в следующих местах (по порядку поиска):

  • По месту расположения модуля SAPI (PHPIniDir директива Apache 2, -c параметр командной строки CGI и CLI)
  • Переменная среды PHPRC.
  • Местоположение файла php.ini может быть указано для различных версий PHP.
    Корневой ключ реестра зависит от разрядности операционной системы и установки PHP. Для 32-разрядного PHP на 32-разрядной Windows или 64-разрядного PHP и 64-разрядной Windows используйте [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]. Для 32-разрядного PHP на 64-разрядной Windows [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]. Следующие ключи реестра исследуются при поиске для установок с совпадающей разрядностью: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], где x, y и z подразумевают major, minor и release версии PHP. Для 32-разрядного PHP на 64-разрядной Windows ключи реестра будут другими:
    [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
    , [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] и [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]. Если также имеется значение IniFilePath в любом из этих ключей, то местонахождение php.ini будет определено первым ключом по порядку (только для Windows).
  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] или [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP], значение
    IniFilePath
    (только для Windows).
  • Текущая директория (исключая CLI).
  • Директория веб-сервера (для модулей SAPI) или директория PHP (иначе в Windows).
  • В директории Windows (C:\windows или C:\winnt) (для Windows) или --with-config-file-path с выбором при компиляции.

Если файл php-SAPI.ini существует (где SAPI — это тип интерфейса, который используется, например, php-cli.ini или php-apache.ini), то он используется вместо php.

ini. Тип интерфейса между веб-сервером и PHP может быть определён с помощью функции php_sapi_name().

Замечание:

Веб-сервер Apache изменяет текущую директорию на корневую при запуске, в результате чего PHP считывает php.ini из корневой файловой системы, если файл существует.

В php.ini можно использовать переменные окружения, как показано ниже.

Пример #1 Переменные окружения php.ini

; PHP_MEMORY_LIMIT взята из переменных окружения
memory_limit = ${PHP_MEMORY_LIMIT}

Директивы php.ini, обрабатываемые модулями, описаны на соответствующих страницах модулей. Список директив ядра имеется в приложении. Не все директивы PHP документированы в этом руководстве: для ознакомления с полным списком директив доступных в вашей версии PHP, прочитайте комментарии вашего php.ini. Кроме того, вы можете найти полезной » последнюю версию php. ini из Git.

Пример #2 Пример php.ini

; любой текст в строке после точки с запятой (;) без кавычек игнорируется
[php] ; маркеры разделов (текст в квадратных скобках) также игнорируется
; Могут быть установлены следующие логические значения:
;    true, on, yes
; или false, off, no, none
register_globals = off
track_errors = yes
; вы можете заключать строки в двойные кавычки
include_path = ".:/usr/local/lib/php"
; обратный слеш обрабатывается так же, как любые другие символы
include_path = ".;c:\php\lib"

Возможно обращаться к существующим ini-переменным из ini-файлов. Пример: open_basedir = ${open_basedir} ":/new/dir".

Сканирование директорий

Существует возможность сконфигурировать PHP для сканирования директорий в поисках .ini-файлов после считывания php.ini. Это можно сделать на моменте компиляции, указав опцию

—with-config-file-scan-dir. Сканирование директорий может быть переопределено во время исполнения установкой переменной среды PHP_INI_SCAN_DIR.

Можно сканировать несколько директорий, разделяя их разделителем, используемом в вашей операционной системе (; в Windows, NetWare и RISC OS; : на всех остальных платформах; в PHP есть константа PATH_SEPARATOR, которую можно использовать) Если PHP_INI_SCAN_DIR

пуста, то PHP также будет сканировать директорию, заданную на этапе компиляции с помощью —with-config-file-scan-dir.

В каждой директории PHP сканирует все файлы заканчивающиеся на .ini в алфавитном порядке. Список всех загруженных файлов в том порядке, в котором они были загружены, доступен с помощью функции php_ini_scanned_files(), либо при запуске PHP с опцией —ini.

add a note

User Contributed Notes 2 notes

up

down

15

weili

1 year ago

For someone who's also wondering.

PHP can work even if there is no configuration file(php.ini) loaded,
it will simply applies the default values to directives.

up

down

-17

ohcc at 163 dot com

6 years ago

in php.ini you can reference to an existing directive or an environment variable using the syntax ${varname}.

Here are some examples.

sys_temp_dir = "${WINDIR}"

--- ${WINDIR} will be replaced by $_ENV['WINDIR'] at runtime

--- you can set environment variables by Apache and use them in php.ini
--- FcgidInitialEnv AUTHOR "WUXIANCHENG"
--- error_log = "${AUTHOR}.log"

error_log = "${sys_temp_dir}"

--- ${sys_temp_dir} will be replace by the value of sys_temp_dir

Also you can use PHP constants in php.ini, but DONT'T wrap them in ${} or "".

error_log = "/data/"PHP_VERSION"/"

---  it works like this php code:

$error_log =  "/data/" . PHP_VERSION . "/";

add a note

PHP: Список основных опций конфигурации

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther

Submit a Pull Request Report a Bug

Ниже приведён частичный список опций конфигурации, используемых скриптами configure при компиляции в Unix-подобных окружениях. Большинство опций конфигурации приведено в соответствующих местах на страницах с описанием модулей, а не здесь. Чтобы получить полный актуальный список опций конфигурации, запустите ./configure —help в каталоге исходного кода PHP после запуска команды autoconf (смотрите также раздел установки PHP). Вам также может быть интересно почитать документацию команды » GNU configure для получения информации о дополнительных опциях команды configure, таких, как

--prefix=PREFIX.

Замечание:

Эти настройки используются только во время компиляции. Если вы хотите изменить конфигурацию PHP во время выполнения, пожалуйста смотрите главу Конфигурация во время выполнения.

  • Разное
  • Поведение PHP
  • Сервер

Опции конфигурации в PHP

Различные опции
—enable-debug

Компилировать с информацией об отладке.

—with-layout=TYPE

Устанавливает, каким образом установленные файлы будут расположены. TYPE принимает значения PHP (по умолчанию) или GNU.

—with-pear=DIR

Установить PEAR в директорию DIR (по умолчанию PREFIX/lib/php).

—without-pear

Не устанавливать PEAR.

—enable-sigchild

Включить собственный дескриптор SIGCHLD для PHP.

—disable-rpath

Не передавать дополнительные пути для поиска библиотек времени исполнения.

—enable-libgcc

Явно использовать libgcc.

—enable-php-streams

Включить экспериментальную функциональность потоков PHP. Используйте только в случае, если вы тестируете код!

—with-zlib-dir[=DIR]

Определить местонахождение библиотеки zlib.

—with-tsrm-pthreads

Использовать потоки (threads) POSIX (по умолчанию).

—enable-shared[=PKGS]

Собирать общие библиотеки [по умолчанию=yes].

—enable-static[=PKGS]

Собирать статические библиотеки [по умолчанию=yes].

—enable-fast-install[=PKGS]

Оптимизировать для быстрой установки [по умолчанию=yes].

—with-gnu-ld

Предполагать, что компилятор С использует линкер GNU ld [по умолчанию=no].

—disable-libtool-lock

Избегать блокирования (может испортить параллельные сборки).

—with-pic

Пытаться использовать только PIC/не PIC объекты [по умолчанию=use both (использовать оба)]

—enable-versioning

Экспортировать только необходимую информацию для отладки. Смотрите INSTALL для дополнительной информации.

Опции PHP
—enable-maintainer-mode

Включает правила сборки и зависимости make, неиспользуемые (а иногда запутывающие) в обычном установщике.

—with-config-file-path=PATH

Устанавливает путь для поиска php.ini, значение по умолчанию PREFIX/lib.

—disable-short-tags

Запрещает использование краткой формы записи начального тега <? по умолчанию.

—with-libdir

Определяет каталог библиотек для сборки PHP в Unix-системах. Для 64-битных систем опция требует особого аргумента --with-libdir=lib64 для директории lib64.

—enable-zts

Включает безопасность потоков. До версии PHP 8.0.0 на системах, отличных от Windows, эта опция называлась —enable-maintainer-zts.

Опции SAPI

Следующий список включает доступные опции SAPI (Server Application Programming Interface) для PHP.

—with-apxs[=FILE]

Собирает динамический модуль для Apache. FILE — это опциональный путь к инструменту «Apache apxs», который используется для apxs по умолчанию. Убедитесь в том, что вы указали версию apxs, которая действительно установлена в вашей системе, а не ту, которая находится в исходниках Apache.

—with-apache[=DIR]

Собирает статичный модуль для Apache. DIR — это верхний уровень директории сборки Apache, по умолчанию /usr/local/apache.

—with-mod_charset

Включает таблицы перекодировки для модуля mod_charset (для русской версии Apache).

—with-apxs2[=FILE]

Собирает динамический модуль для Apache 2.0. FILE — это опциональный путь к инструменту «Apache apxs», который используется для apxs по умолчанию.

—disable-cli

Отключает сборку CLI-версии PHP (опция также вызывает —without-pear). Больше информации можно получить в разделе Использование PHP в командной строке.

—enable-phpdbg

Включает поддержку модуля SAPI для интерактивного дебаггера phpdbg.

—enable-embed[=TYPE]

Включает сборку встроенной библиотеки SAPI. TYPE может принимать значение shared или static, по умолчанию установлено shared.

—with-servlet[=DIR]

Включает поддержку сервлетов. DIR — это базовая директория установки JSDK. SAPI требует java-модули, может быть собрана как доступная для dl.

—disable-cgi

Отключает сборку CGI-версии PHP.

Этот аргумент включает FastCGI, который предварительно должен быть включён аргументом --enable-fastcgi.

add a note

User Contributed Notes 2 notes

up

down

1

atesin () gmail ! com

2 years ago

i'll answer myself (FINALLY!)

current "configure options" can be viewed with "php-config" shell script, aside with other compile time options too =D!!! . ), there is an editor note with additional info about it

up

down

-2

atesin () gmail ! com

2 years ago

please somebody tell me how to display configure options used in php actual binary

it was shown in phpinfo() some years before, it was very useful, specially with 'phpize' recompilation and to enable some pecl/pear module :/

please tell me also which ctriteria had php guys used to suddenly decided to hide (or obfuscate) this info :/

thanks in advance

add a note

Создание файла конфигурации в PHP

Варианты, которые я вижу с относительными достоинствами и недостатками:

Файловые механизмы

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

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

Распространенными форматами файлов, используемых для файлов конфигурации, являются код PHP, файлы в формате ini, JSON, XML, YAML и сериализованный PHP. обрабатывается через include или require) проанализированный код будет доступен из кеша кода операции, что дает преимущество в производительности.

include_path предоставляет средства для абстрагирования потенциальных местоположений файла, не полагаясь на дополнительный код.

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

Если конфигурация создается с помощью инструмента, можно проверить данные в инструменте, но нет стандартной функции экранирования данных для встраивания в код PHP, которая существует для HTML, URL-адресов, операторов MySQL, команд оболочки.

Серийные данные Это относительно эффективно для небольших объемов конфигурации (примерно до 200 элементов) и позволяет использовать любую структуру данных PHP. Для создания/анализа файла данных требуется очень мало кода (поэтому вместо этого вы можете потратить свои усилия на то, чтобы файл записывался только с соответствующей авторизацией).

Экранирование содержимого, записанного в файл, обрабатывается автоматически.

Поскольку вы можете сериализовать объекты, это создает возможность для вызова кода, просто прочитав файл конфигурации (магический метод __wakeup).

Структурированный файл

Сохранение в виде INI-файла, предложенного Марселем или JSON или XML, также предоставляет простой API-интерфейс для отображения файла в структуру данных PHP (и, за исключением XML, для экранирования данных и создания файл) при устранении уязвимости вызова кода с использованием сериализованных данных PHP.

Производительность будет аналогична сериализованным данным.

Хранилище базы данных

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

OTOH это не лучшее место для хранения учетных данных, которые вы используете для подключения к вашей базе данных!

Среда выполнения

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

Это устраняет необходимость для кода PHP искать в определенном месте конфигурацию. OTOH плохо масштабируется для больших объемов данных, и его трудно универсально изменить во время выполнения.

На клиенте

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

И наоборот, это имеет много преимуществ для хранения конфиденциальной информации, которая принадлежит конечному пользователю — если вы не храните ее на сервере, ее нельзя оттуда украсть.

Сетевые каталоги Еще одно интересное место для хранения информации о конфигурации — это DNS/LDAP. Это будет работать для небольшого количества небольших фрагментов информации, но вам не нужно придерживаться 1-й нормальной формы — рассмотрим, например, SPF.

Инфраструктура поддерживает кэширование, репликацию и распространение. Следовательно, он хорошо работает для очень больших инфраструктур.

Системы управления версиями

Конфигурация, как и код, должна управляться и контролироваться версиями — поэтому получение конфигурации непосредственно из вашей системы VC является жизнеспособным решением. Но часто это приводит к значительным потерям производительности, поэтому может быть целесообразно кэширование.

git — Как мне не зафиксировать мой файл config.

php (полностью игнорировать его, не загружать и не загружать) в Github при использовании VSCode?

спросил

Изменено 2 года, 2 месяца назад

Просмотрено 533 раза

У меня есть файл config.php на Github, однако у меня есть другой файл config.php на моем ПК. Как я могу заставить Github полностью игнорировать этот файл и сделать так, чтобы он не загружал и не загружал его, когда я делаю новую фиксацию?

Я использую VSCode.

Это действительно раздражает, когда он загружает пароль файла config.php в мое личное хранилище, есть ли решение для этого или я должен просто удалить файл config.php из папки, когда я хочу сделать новый коммит?

  • git
  • visual-studio-code

Добавьте файл в свой файл . gitignore . Вообще говоря, файлы, которые содержат пароль или конфиденциальную информацию о конфигурации, должны храниться отдельно от вашего основного репозитория git, как для безопасности, так и для того, чтобы разные рабочие станции не переопределяли друг друга.

Подробнее см. в документации на gitignore.

Поскольку файл ранее находился в репозитории, запустите git rm -r --cached config.php , чтобы прекратить его отслеживание. Обратите внимание, что этот файл по-прежнему будет присутствовать в прошлых коммитах, поэтому с точки зрения безопасности, если есть какая-либо конфиденциальная информация, вы можете подумать о смене паролей и т. д.

4

Github привязан к git. Было бы сложно (невозможно?) зафиксировать ваш config.php в git, но не загрузить его вместе со всем, когда вы отправляете свои коммиты на GitHub.

Так что используйте gitignore. Это заставит git полностью игнорировать файл.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *