
Файл php.ini отвечает за ключевые настройки PHP: лимиты памяти, максимальный размер загружаемых файлов, параметры ошибок и расширений. На серверах Linux стандартное расположение этого файла зависит от способа установки PHP. Для пакетов из репозиториев чаще всего это /etc/php/{версия}/apache2/php.ini для Apache и /etc/php/{версия}/cli/php.ini для командной строки. На системах с Nginx через PHP-FPM путь будет /etc/php/{версия}/fpm/php.ini.
Для веб-приложений с ограниченными правами доступа полезно создавать локальный php.ini в корне проекта. Однако не все директивы поддерживаются локально: изменения в memory_limit или upload_max_filesize могут игнорироваться, если сервер настроен на глобальный контроль. Чтобы убедиться, что изменения вступили в силу, рекомендуется использовать скрипт с функцией phpinfo() и проверить активный путь к файлу конфигурации.
Расположение файла php.ini на сервере
Файл php.ini управляет конфигурацией PHP и может находиться в разных директориях в зависимости от типа установки и операционной системы.
- Linux с Apache: обычно расположение –
/etc/php/версия/apache2/php.ini. Для проверки используйте командуphp --iniилиphp -i | grep "Loaded Configuration File". - Linux с Nginx и PHP-FPM: файл может находиться в
/etc/php/версия/fpm/php.ini. После изменений требуется перезапуск службыsystemctl restart phpX.X-fpm. - Windows: при стандартной установке путь чаще всего
C:\xampp\php\php.iniилиC:\Program Files\PHP\php.ini. Проверку можно выполнить черезphpinfo(). - Shared Hosting: расположение может быть ограничено провайдером. Рекомендуется создать
phpinfo.phpс содержимым<?php phpinfo(); ?>для точного пути.
Важно помнить, что на сервере может быть несколько конфигурационных файлов:
- php.ini основной: глобальные настройки PHP.
- php.ini пользовательский: иногда разрешено размещение в корневой папке сайта или в
.user.iniдля отдельных проектов. - Дополнительные конфиги: папка
conf.dсодержит файлы с настройками отдельных модулей.
Для изменения настроек убедитесь, что редактируете корректный файл, соответствующий используемому SAPI. После правок всегда проверяйте актуальные значения через phpinfo() или команду php -i.
Если файл отсутствует, можно создать копию php.ini-production или php.ini-development из директории установки PHP и использовать ее в качестве рабочего конфигурационного файла.
Как определить путь к активному php.ini через команду php
Для точного определения расположения используемого на сервере файла php.ini применяется встроенная команда PHP из командной строки. Это позволяет исключить ошибки при редактировании конфигурации.
Основная команда:
php --ini
| Команда | Описание |
|---|---|
php --ini |
Отображает путь к активному php.ini и перечень дополнительных конфигураций |
php -i | grep "Loaded Configuration File" |
| Тип | |
|---|---|
| Основной файл конфигурации | /etc/php/8.1/cli/php.ini |
| Дополнительные файлы конфигурации | /etc/php/8.1/cli/conf.d/20-mysqli.ini |
Рекомендации:
- Используйте CLI версию PHP, чтобы точно определить активный
php.iniдля командной строки. - Для веб-сервера пути могут отличаться, проверяйте через
phpinfo(). - Не редактируйте
php.iniбез резервной копии оригинального файла.
Использование phpinfo() для поиска файла php.ini
Для определения точного пути к файлу php.ini на сервере используется функция phpinfo(). Создайте новый PHP-файл, например info.php, и добавьте следующий код:
<?php
phpinfo();
?>
После загрузки файла на сервер откройте его через браузер. В сгенерированной странице найдите секцию Loaded Configuration File. В этой строке будет указан абсолютный путь к активному файлу php.ini. Если значение отображается как (none), это означает, что PHP работает без загруженного конфигурационного файла и использует значения по умолчанию.
Дополнительно обратите внимание на Scan this dir for additional .ini files. Эта секция показывает папку, где PHP ищет дополнительные конфигурационные файлы, что важно при использовании модулей и пользовательских настроек.
Использование phpinfo() позволяет точно определить и проверить текущий конфигурационный файл без необходимости доступа к командной строке, что особенно полезно на shared-хостингах.
Местоположение php.ini на серверах с разными ОС

На Linux-серверах php.ini обычно находится в директории, соответствующей установленной версии PHP. Для PHP, установленного через пакетный менеджер, стандартные пути: /etc/php/7.4/apache2/php.ini или /etc/php/7.4/cli/php.ini для командной строки. В системах с Nginx путь аналогичен, но файл используется PHP-FPM: /etc/php/7.4/fpm/php.ini.
На серверах с Windows по умолчанию php.ini располагается в корневой папке установки PHP, например C:\php\php.ini. При использовании пакета XAMPP или WAMP путь изменяется на C:\xampp\php\php.ini или C:\wamp64\bin\php\php7.4.9\php.ini.
Для macOS при установке через Homebrew php.ini находится по адресу /usr/local/etc/php/7.4/php.ini. При использовании MAMP стандартная директория: /Applications/MAMP/bin/php/php7.4.9/conf/php.ini.
Если php.ini отсутствует, PHP использует файл php.ini-development или php.ini-production как шаблон. Для точного определения активного конфигурационного файла рекомендуется выполнить команду php --ini в терминале или создать скрипт с <?php phpinfo(); ?> и проверить значение «Loaded Configuration File».
Изменения в php.ini требуют перезапуска веб-сервера или PHP-FPM, иначе новые настройки не применяются. На системах с несколькими версиями PHP важно редактировать файл, соответствующий используемой версии, иначе изменения будут игнорированы.
Отличие локального и глобального php.ini и их расположение

PHP использует два типа конфигурационных файлов: глобальный php.ini и локальные варианты, которые могут быть переопределены для конкретного проекта.
- Глобальный php.ini применяется ко всем веб-приложениям на сервере. Его изменения влияют на каждый сайт или скрипт, запущенный через этот экземпляр PHP.
- Локальный php.ini позволяет задавать настройки только для конкретного каталога или виртуального хоста. Обычно используется для специфических проектов, требующих индивидуальных параметров, таких как лимиты памяти, максимальный размер загружаемых файлов или включение расширений.
Расположение файлов зависит от способа установки PHP и типа сервера:
- Глобальный php.ini:
- Linux (Debian/Ubuntu):
/etc/php/8.2/apache2/php.iniдля Apache,/etc/php/8.2/cli/php.iniдля CLI. - CentOS/RHEL:
/etc/php.iniили/etc/php/8.2/php.ini. - Windows:
C:\PHP\php.iniилиC:\Program Files\PHP\php.ini.
- Linux (Debian/Ubuntu):
- Локальный php.ini:
- Может располагаться в корне проекта или в папках виртуальных хостов.
- Для Apache с mod_php чаще используется
.htaccessс директивойphp_value, если прямой локальный php.ini не поддерживается. - Для PHP-FPM локальные конфигурации задаются через пул процессов (
www.conf) илиphp_valueвpool.d.
Рекомендации по работе с php.ini:
- Для изменений, влияющих на все проекты, редактируйте глобальный php.ini.
- Для отдельного проекта создавайте локальный php.ini или используйте директивы в
.user.ini(поддерживается PHP ≥ 5.3). - После изменения глобального или локального php.ini необходимо перезапустить веб-сервер или PHP-FPM.
- Для проверки активного php.ini используйте команду
php --iniдля CLI илиphpinfo()в веб-браузере.
Как найти php.ini при использовании веб-серверов Apache и Nginx

Для Apache на Unix-подобных системах файл php.ini обычно располагается в директории, указанной при сборке PHP, чаще всего это /etc/php/{версия}/apache2/php.ini. На Windows-серверах Apache ищите его в директории установки PHP, например C:\php\php.ini. Проверить актуальный путь можно с помощью команды php -i | grep "Loaded Configuration File" в терминале или создав PHP-скрипт с содержимым <?php phpinfo(); ?> и открыв его в браузере. В разделе «Loaded Configuration File» будет указан полный путь к файлу.
Для Nginx PHP обычно работает через PHP-FPM. Файл php.ini находится в директории конфигурации PHP-FPM: на Unix-системах это /etc/php/{версия}/fpm/php.ini. На Windows с Nginx путь аналогичен пути установки PHP. Проверить актуальный файл можно командой php-fpm -i | grep "Loaded Configuration File" или через скрипт с phpinfo(); в веб-контексте, убедившись, что запущен FPM-процесс. Также важно учитывать, что отдельные пуловые конфигурации PHP-FPM могут переопределять значения через php_admin_value, но сам php.ini остаётся в указанном пути.
Если файл php.ini отсутствует, PHP использует встроенные значения по умолчанию. В таких случаях можно создать копию стандартного файла php.ini-development или php.ini-production из директории установки PHP и поместить её в ожидаемую систему директорию.
Проверка прав доступа и возможности редактирования php.ini

Для проверки прав доступа к файлу php.ini сначала определите его точное расположение с помощью функции phpinfo(). В разделе Loaded Configuration File будет указан полный путь.
После этого подключитесь к серверу через SSH или используйте файловый менеджер хостинга. Выполните команду ls -l /путь/к/php.ini для отображения текущих прав. Стандартные права для безопасного редактирования должны быть 644 (-rw-r--r--) с владельцем, совпадающим с пользователем веб-сервера, чаще всего www-data или apache.
Если необходимо изменить настройки php.ini, убедитесь, что у пользователя есть права на запись. При отсутствии права записи применяйте команду sudo chown <имя_пользователя>:<группа> /путь/к/php.ini и chmod 644 /путь/к/php.ini, после чего изменения будут возможны без риска нарушения безопасности системы.
Редактирование php.ini следует выполнять только через текстовые редакторы с поддержкой UNIX-формата (например, nano или vim). После внесения изменений необходимо перезапустить веб-сервер командой sudo systemctl restart apache2 или sudo systemctl restart php-fpm, чтобы новые значения вступили в силу.
Для проверки успешного применения изменений используйте php -i | grep 'directive_name' или снова вызов phpinfo(). Отсутствие прав на редактирование можно обойти через локальные .user.ini или php_value в .htaccess, если сервер поддерживает соответствующие директивы.
Вопрос-ответ:
Где на сервере обычно находится файл php.ini?
Местоположение файла php.ini зависит от типа установки PHP. В стандартных сборках Linux он часто находится в каталогах вроде /etc/php/7.4/apache2/ для Apache или /etc/php/7.4/cli/ для командной строки. В Windows это может быть директория с PHP, например C:\php\ или C:\Program Files\PHP\. Точный путь можно узнать с помощью команды php —ini в терминале или создав скрипт с phpinfo().
Как определить, какой php.ini используется в данный момент?
Для этого создают файл с одной строкой: <?php phpinfo(); ?>. После открытия страницы в браузере нужно найти раздел «Loaded Configuration File». Там будет указан полный путь к активному файлу php.ini. Это полезно, если на сервере установлено несколько версий PHP или используется отдельная конфигурация для веб-сервера и консоли.
Можно ли иметь несколько файлов php.ini на одном сервере?
Да, на сервере могут существовать разные файлы php.ini для разных целей. Например, один для Apache, другой для CLI. Также веб-приложения могут использовать локальные конфигурации через файлы .user.ini или настройки в .htaccess, которые перекрывают значения глобального php.ini. Это позволяет гибко менять параметры PHP для отдельных сайтов без изменения основной конфигурации.
Что делать, если файл php.ini не найден на сервере?
Если стандартный php.ini отсутствует, PHP использует настройки по умолчанию. В таком случае можно скопировать файл php.ini-production или php.ini-development из директории установки PHP в нужное место и настроить его. После изменения конфигурации веб-сервер нужно перезапустить, чтобы новые параметры вступили в силу.
Можно ли изменить путь к php.ini без перемещения файла?
Да, путь к конфигурационному файлу можно указать при запуске PHP с помощью параметра -c: php -c /путь/к/php.ini script.php. Для веб-сервера можно изменить конфигурацию запуска PHP-FPM или Apache, добавив путь к php.ini. Такой способ удобен, если нужно использовать альтернативный файл для тестирования или для отдельных сайтов, не затрагивая основную конфигурацию.
