PHP-FastCGI: тестирование и кастомный php.ini
4 Тестирование
Создайте небольшой PHP-файл для тестирования на сайте, например для www.example1.com:
vi /var/www/web1/web/info.phpВставьте туда код:
Откройте файл в браузере: http://www.example1.com/info.php. В выводе phpinfo() в строке Server API вы должны увидеть CGI/FastCGI.

Важно: если вы видите Server API другое (например Apache 2.0 Handler), значит сайт не использует FastCGI и нужно проверить конфигурацию Apache и модуль mod_fcgid.
5 Кастомный php.ini для каждого веб-сайта
Так как для каждого сайта используется свой wrapper-скрипт php-fcgi-starter, вы можете назначать разные php.ini для разных сайтов.
Пример: скопируем системный php.ini в директорию сайта /var/www/web2/ и назначим владельца web2:
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И пропишите директорию с php.ini в переменной PHPRC:
#!/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 для www.example2.com:
vi /var/www/web2/web/info.phpВставьте:
Откройте http://www.example2.com/info.php и найдите строку Loaded Configuration File — она должна указывать на /var/www/web2/php.ini.

Совет: держите кастомный php.ini под управлением системы контроля версий или делайте заметки о внесённых изменениях, чтобы при обновлениях пакетов не потерять настройки.
6 Изменение отдельных настроек PHP
Вместо передачи целого php.ini можно изменить отдельные параметры, добавив флаг -d к запуску php-cgi в 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.

Примечание: флаг -d работает как для булевых, так и для строковых/числовых значений. Для нескольких переопределений перечисляйте их в командной строке.
Критерии приёмки
- В тестовом info.php в поле Server API отображается CGI или FastCGI.
- Для сайта с кастомным php.ini поле Loaded Configuration File указывает путь к нужному php.ini.
- При установке параметра через -d соответствующая директива в phpinfo() отражает новое значение.
- После изменений Apache перегружен и новые процессы PHP поднимаются с нужными параметрами.
Чеклист (роль: системный администратор)
- Создать info.php в директории сайта.
- Проверить Server API через браузер.
- Скопировать /etc/php.ini в директорию сайта при необходимости.
- Установить PHPRC в php-fcgi-starter и выставить права владельца.
- Для одиночных настроек добавить -d в exec-строку.
- Перезагрузить Apache и повторно проверить phpinfo().
Быстрая методика (пошагово)
- Разверните php-fcgi-скрипт для сайта: /var/www/php-fcgi-scripts/
/php-fcgi-starter. - Укажите PHPRC=/path/to/site/ или оставьте /etc/ и добавьте нужные -d опции.
- Перезагрузите httpd: /etc/init.d/httpd reload.
- Откройте http://
/info.php и проверьте Server API, Loaded Configuration File, требуемые директивы.
Когда это не работает — типичные причины и решения
Проблема: в Server API по-прежнему Apache Handler.
- Причина: не подключен или не настроен модуль mod_fcgid (или эквивалент). Проверьте конфигурацию Apache и логи.
Проблема: Loaded Configuration File не указывает на кастомный php.ini.
- Причина: PHPRC не экспортирован или путь неверный. Проверьте права доступа и переменную PHPRC в том же процессе, где запускается php-cgi.
Проблема: флаг -d не применяется.
- Причина: wrapper-скрипт не обновлён на используемых процессах. Перезапустите демоны FastCGI/Apache и убедитесь, что используется обновлённый скрипт.
Проблема: изменения php.ini не вступают в силу для уже существующих процессов.
- Решение: завершите старые процессы PHP-FCGI/перезапустите Apache, чтобы поднялись новые процессы с обновлёнными настройками.
Короткий глоссарий
- PHPRC: переменная окружения, указывающая директорию с php.ini.
- php-fcgi-starter: wrapper-скрипт, запускающий php-cgi для конкретного сайта.
- php-cgi: CGI-исполняемый файл PHP, используемый с FastCGI.
Тестовые сценарии / Критерии приёмки
- Тест: разместить info.php и открыть в браузере — ожидаемый результат: phpinfo() доступен.
- Тест: назначить PHPRC=/var/www/web2/ и перезагрузить — ожидаемый результат: Loaded Configuration File = /var/www/web2/php.ini.
- Тест: добавить exec /usr/bin/php-cgi -d some_setting=value — ожидаемый результат: в phpinfo() значение some_setting равно value.
Ссылки
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Fedora: http://fedoraproject.org/
Краткая сводка
- Используйте отдельные php-fcgi-starter скрипты для каждого сайта, чтобы задать индивидуальные настройки PHP.
- PHPRC указывает директорию с php.ini; флаг -d позволяет переопределять отдельные директивы.
- Всегда перезагружайте Apache и проверяйте phpinfo() после изменения конфигурации.
Важно: сохраняйте резервные копии оригинального php.ini перед изменениями и проверяйте права доступа на файлы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента