Тестирование и настройка PHP-FastCGI для отдельных сайтов

Важно: все примеры выполняются от имени системного администратора и предполагают доступ к файловой системе и перезагрузку сервера Apache.
Тестирование
Создайте небольшой PHP-файл для тестирования на сайте, например в каталоге www.example1.com:
vi /var/www/web1/web/info.php
| |
Затем откройте этот файл в браузере (http://www.example1.com/info.php). Если всё настроено правильно, вы увидите страницу phpinfo(), а в строке Server API будет указано CGI/FastCGI.
Отдельный php.ini для каждого сайта
Поскольку для каждого сайта используется свой wrapper-скрипт php-fcgi-starter, можно назначать разные php.ini для каждого сайта. В примере мы копируем системный php.ini в директорию сайта /var/www/web2/ и назначаем владельца web2:web2:
cp /etc/php5/cgi/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini
(Теперь можно редактировать /var/www/web2/php.ini согласно требованиям сайта.)
Откройте стартовый скрипт для сайта 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/lib/cgi-bin/php
|
Перезагрузите Apache:
/etc/init.d/apache2 reload
Создайте phpinfo() файл для 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
Вместо передачи целого php.ini вы можете изменить отдельные настройки PHP, добавив переключатель -d к исполняемому PHP в php-fcgi-starter. Например, чтобы отключить magic_quotes_gpc для сайта www.example2.com:
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter
| #!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off
|
Перезагрузите Apache:
/etc/init.d/apache2 reload
Откройте http://www.example2.com/info.php и найдите строку magic_quotes_gpc — теперь она должна показывать Off.
Контрольный список перед изменениями
- Сделайте резервную копию текущих php.ini и php-fcgi-starter скриптов.
- Убедитесь, что права и владельцы файлов настроены корректно (например web2:web2).
- Тестируйте изменения на тестовом сайте/виртуальном хосте перед продакшеном.
- Проверяйте логи Apache и ошибок PHP после перезагрузки.
Когда такой подход не подходит
- Если у вас много сайтов с одинаковыми потребностями — централизованная конфигурация легче в поддержке.
- Если вы используете PHP-FPM (рекомендуется для современных развёртываний) — логика конфигурации и управление пулами отличаются.
- Для лёгких одностраничных сайтов возможна избыточность при создании отдельного php.ini на каждый сайт.
Альтернативные подходы
- Использовать PHP-FPM для пулов процессов, где каждому пулу можно задать отдельные опции конфигурации.
- Использовать .user.ini (если включена директива user_ini.filename) для локальных настроек в пределах каталога сайта.
- Применять глобальные ini-переменные плюс override через ini_set() в коде (ограниченная сфера применения).
Мини-методология для внедрения (4 шага)
- Подготовка: резервные копии и тестовая среда.
- Локальная конфигурация: создать /var/www/siteN/php.ini или добавить -d в php-fcgi-starter.
- Перезагрузка и первичная проверка phpinfo().
- Мониторинг логов и нагрузочного теста.
Роль-based чек-лист
- Сисадмин: резервные копии, права, перезагрузка сервисов, проверка логов.
- Девопс-инженер: автоматизация развёртывания php-fcgi-starter и ini через конфигурационные менеджеры.
- Разработчик: проверка приложения под новой конфигурацией, использование phpinfo() для верификации.
Критерии приёмки
- phpinfo() показывает CGI/FastCGI в Server API.
- Loaded Configuration File указывает на ожидаемый php.ini.
- Изменённые директивы (например magic_quotes_gpc) отражаются как Off/On согласно задаче.
- В логах отсутствуют новые критические ошибки после перезагрузки.
Советы по безопасности
- Не храните секреты (пароли, ключи) в php.ini в каталоге публичного веб-сайта.
- Ограничьте права доступа на php.ini (например 640) и владельца на системного пользователя.
- Следите за версиями PHP и обновляйте модули безопасности.
Ссылки
- mod_fcgid: http://httpd.apache.org/mod_fcgid/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Debian: http://www.debian.org/
Об авторе
Falko Timme — владелец Timme Hosting, ведущий мейнтейнер HowtoForge (с 2005) и один из разработчиков ISPConfig. Также автор вклада в книгу O’Reilly по системному администрированию Linux.
Сводка
- Тестирование через phpinfo() подтверждает, работает ли PHP через CGI/FastCGI.
- Для каждого сайта можно задать отдельный php.ini или менять отдельные опции через -d.
- Всегда делайте резервные копии и проверяйте логи после изменений.
Похожие материалы
Установка Asterisk для первой PBX

Microsoft Store не работает — как исправить

Сканирование WordPress: найти уязвимости и защитить сайт

RSS из темы форума через Blogger и Gmail
Установка OCS Inventory NG Server 2 на CentOS 5.5
