Тестирование 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() раскрывает информацию о конфигурации.
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.

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.

Проверка и перезагрузка Apache
Когда вносите изменения в php-fcgi-starter или php.ini сайтов, всегда перезагружайте или перечитывайте конфигурацию веб-сервера. На системах с init:
/etc/init.d/httpd reloadНа systemd-системах используйте:
systemctl reload httpdКраткая методология (шаги)
- Создать тестовый info.php на сайте.
- Проверить Server API и Loaded Configuration File.
- Если нужен уникальный php.ini — скопировать /etc/php.ini в папку сайта и выставить PHPRC.
- Для одиночных изменений — добавить ключи -d в php-fcgi-starter.
- Перезагрузить/перечитать конфигурацию 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.
Ссылки
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Fedora: http://fedoraproject.org/
Краткое резюме
Использование php-fcgi-starter и PHPRC позволяет гибко управлять конфигурацией PHP на уровне отдельного сайта без изменения глобального php.ini. Для единичных настроек достаточно ключа -d при запуске php-cgi. Всегда проверяйте изменения через phpinfo() и ограничивайте доступ к тестовым страницам.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента