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

Важно: если вы видите пустую страницу или скачивание файла — скорее всего Apache не перепустил запрос к php-cgi. Проверьте права и владельца wrapper-скрипта и логи Apache.
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 для www.example2.com:
vi /var/www/web2/web/info.phpОткройте http://www.example2.com/info.php и найдите строку Configuration File (php.ini) Path — она должна указывать на /var/www/web2/php.ini.

6 Изменение отдельных настроек PHP
Вместо передачи целого php.ini можно изменить отдельные параметры, добавив switch -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.

Практические советы и контроль качества
Быстрая проверка
- Убедитесь, что wrapper-скрипт исполняем и принадлежит нужному пользователю.
- Проверьте логи Apache (/var/log/httpd/error_log) на ошибки при запуске php-cgi.
- Используйте phpinfo() только временно и удаляйте файл после теста.
Критерии приёмки
- info.php открывается без скачивания и показывает CGI/FastCGI в Server API.
- Configuration File Path (php.ini) указывает на ожидаемую директорию сайта при использовании PHPRC.
- Изменённые параметры через -d отражаются в phpinfo().
Роль-based чеклист
- Администратор: проверить права, владельца, SELinux-контекст, перезагрузить Apache.
- Девопс/инженер: подтвердить переменные окружения в wrapper-скрипте и значения CHILDREN/REQUESTS.
- Разработчик: запустить phpinfo() и проверить конфигурацию расширений и настроек INI.
Альтернативные подходы и когда этот метод не подходит
- Если вы используете системный php-fpm с пулами (pools), лучше задать настройки через конфигурацию пулов, а не через wrapper-скрипты.
- В окружениях с контейнерами (Docker, Kubernetes) управление php.ini делается на уровне образа или ConfigMap.
- Если сайт использует модуль mod_php (mpm_prefork), этот способ не применим — модуль использует глобальный php.ini.
Модель принятия решений (эвристика)
- Нужна изоляция конфигурации сайта? — Используйте PHPRC или отдельный php.ini в директории сайта.
- Нужна динамическая смена параметров без создания отдельного php.ini? — Применяйте -d в exec.
- Требуется масштабируемость и централизованное управление? — Рассмотрите php-fpm с пулом и конфигурацией на уровне развертывания.
Безопасность и осторожность
- Не давайте файлу phpinfo() публичный доступ в продакшене: он раскрывает пути и версии.
- Ограничьте права на /var/www/webX/php.ini и на скрипты php-fcgi-starter.
- Если включён SELinux, настройте правильные контексты для директорий и файлов.
Краткий словарь
- PHPRC — переменная окружения, указывающая директорию для загрузки php.ini.
- php-cgi — CGI-исполняемый файл PHP для запуска через FastCGI.
- php-fcgi-starter — wrapper-скрипт, который задаёт окружение и вызывает php-cgi.
7 Ссылки
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- CentOS: http://www.centos.org/
Резюме: тестируйте через phpinfo(), используйте PHPRC для отдельных php.ini и -d для одиночных изменений. Убедитесь в правильных правах и проверяйте логи для отладки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента