Гид по технологиям

Тестирование PHP-FastCGI и настройка отдельного php.ini для сайта

• 3 min read • Серверы • Обновлено 18 Nov 2025
PHP-FastCGI: тест и отдельный php.ini для сайта
PHP-FastCGI: тест и отдельный php.ini для сайта

4 Тестирование

Создайте небольшой PHP-файл для тестирования на сайте, например для www.example1.com:

vi /var/www/web1/web/info.php

Вставьте код:

Откройте в браузере http://www.example1.com/info.php. Если всё настроено корректно, вывод будет похож на скриншот, и в строке Server API вы увидите CGI/FastCGI.

Вывод phpinfo, показывающий Server API: CGI/FastCGI

Важно: удаляйте или ограничивайте доступ к таким тестовым файлам на продакшене — phpinfo() раскрывает информацию о конфигурации.

5 Отдельный php.ini для каждого сайта

Поскольку для каждого сайта используется собственный wrapper-скрипт php-fcgi-starter, можно назначать уникальный php.ini на сайт. Пример: скопируем системный php.ini в директорию сайта www.example2.com и назначим владельца:

cp /etc/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini

(Теперь при необходимости отредактируйте /var/www/web2/php.ini.)

Откройте wrapper-скрипт для сайта web2:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

Вставьте или измените строку PHPRC, чтобы она указывала на директорию с php.ini:

#!/bin/sh
PHPRC=/var/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

После правки перезагрузите конфигурацию Apache:

/etc/init.d/httpd reload

Создайте файл info.php для второго сайта:

vi /var/www/web2/web/info.php

Откройте http://www.example2.com/info.php и проверьте строку Loaded Configuration File — она должна показывать /var/www/web2/php.ini.

phpinfo, показывающий Loaded Configuration File: /var/www/web2/php.ini

6 Изменение отдельных настроек PHP

Если не нужно менять весь php.ini, можно переопределять отдельные опции при запуске php-cgi, добавив ключ -d в wrapper-скрипт. Пример — отключение magic_quotes_gpc для сайта web2:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

Измените содержимое на:

#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off

Перезагрузите Apache:

/etc/init.d/httpd reload

Откройте http://www.example2.com/info.php и найдите строку magic_quotes_gpc — теперь она должна быть Off.

phpinfo, показывающий magic_quotes_gpc = Off

Проверка и перезагрузка Apache

Когда вносите изменения в php-fcgi-starter или php.ini сайтов, всегда перезагружайте или перечитывайте конфигурацию веб-сервера. На системах с init:

/etc/init.d/httpd reload

На systemd-системах используйте:

systemctl reload httpd

Краткая методология (шаги)

  1. Создать тестовый info.php на сайте.
  2. Проверить Server API и Loaded Configuration File.
  3. Если нужен уникальный php.ini — скопировать /etc/php.ini в папку сайта и выставить PHPRC.
  4. Для одиночных изменений — добавить ключи -d в php-fcgi-starter.
  5. Перезагрузить/перечитать конфигурацию Apache и повторно проверить через phpinfo().

Критерии приёмки

  • info.php доступен и возвращает страницу phpinfo().
  • В Server API указано CGI или FastCGI.
  • Loaded Configuration File указывает на ожидаемый php.ini (если использовался PHPRC).
  • Изменённые опции отображаются в phpinfo() с корректными значениями.
  • Тестовый файл удалён или доступ к нему ограничен через IP/аутентификацию.

Чек-лист для администратора

  • Сделан бэкап /etc/php.ini перед копированием.
  • Правильные владельцы/права на /var/www/webX/php.ini (обычно владелец веб-сайта).
  • PHPRC в wrapper указывает на нужную директорию.
  • PHP_FCGI_CHILDREN и PHP_FCGI_MAX_REQUESTS настроены согласно ресурсам сервера.
  • Apache перезагружен корректно.
  • Информационные страницы phpinfo удалены или заблокированы после теста.

Безопасность и конфиденциальность

  • phpinfo() раскрывает конфиденциальные детали сервера: версии компонентов, пути, переменные окружения. Не оставляйте такие страницы доступными в продакшене.
  • Правильно настройте права доступа к файлам php.ini в каталоге сайта. Доступ только для администратора/владельца.
  • При использовании пользовательских php.ini убедитесь, что они не ослабляют безопасность (display_errors=On, expose_php=On и т.п.).

1‑строчный глоссарий

  • PHPRC — переменная окружения, указывающая директорию с php.ini.
  • php-fcgi-starter — wrapper-скрипт, запускающий php-cgi с нужными переменными окружения.
  • phpinfo() — функция PHP, выводящая текущую конфигурацию PHP и окружения.

Когда этот подход не подходит (контрпример)

  • Если хостинг использует модульный SAPI (mod_php), а не FastCGI — PHPRC и wrapper-скрипты не будут применимы.
  • На высоконагруженных серверах стоит предпочесть глобальную, централизованно управляемую конфигурацию, а не хаотичное создание множества отдельных php.ini.

Ссылки

Краткое резюме

Использование php-fcgi-starter и PHPRC позволяет гибко управлять конфигурацией PHP на уровне отдельного сайта без изменения глобального php.ini. Для единичных настроек достаточно ключа -d при запуске php-cgi. Всегда проверяйте изменения через phpinfo() и ограничивайте доступ к тестовым страницам.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро