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.

Важно: если вместо CGI/FastCGI отображается модуль Apache (например, Apache 2.0 Handler), то PHP работает как модуль, и настройки через php-fcgi-starter не применяются.
5 Индивидуальный php.ini для каждого сайта
Так как у каждого сайта есть свой wrapper-скрипт php-fcgi-starter, можно назначать отдельный php.ini для каждого сайта. Для примера скопируем системный php.ini в каталог сайта /var/www/web2/ и сделаем так, чтобы www.example2.com использовал этот файл.
cp /etc/php5/cgi/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…и укажите каталог /var/www/web2/ в переменной 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Создайте файл 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:

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

Быстрая памятка по командам
- Создание тестового файла: vi /var/www/
/web/info.php - Копирование php.ini: cp /etc/php5/cgi/php.ini /var/www/
/ - Правка wrapper: vi /var/www/php-fcgi-scripts/
/php-fcgi-starter - Перезагрузка Apache: /etc/init.d/apache2 reload
Чек-лист для администратора перед запуском сайта
- Убедиться, что сайт использует CGI/FastCGI (phpinfo — Server API)
- Назначить PHPRC в php-fcgi-starter, если нужен отдельный php.ini
- Проверить права на php.ini (chown webX:webX)
- Перезагрузить Apache и проверить Loaded Configuration File
- При изменении опций — протестировать конкретные параметры через phpinfo
Критерии приёмки (тесты)
- Сервер API отображает CGI/FastCGI в phpinfo для целевого сайта.
- Loaded Configuration File указывает на ожидаемый php.ini в каталоге сайта.
- Изменённая настройка (например magic_quotes_gpc) отражается как Off/On в выводе phpinfo.
- После перезагрузки Apache никаких ошибок в логах, связанных с запуском php-fcgi-starter.
Альтернативные подходы
- Использовать FPM (php-fpm) вместо классического CGI/FastCGI: современный метод с пулом процессов и socket/port, удобнее для управления ресурсами.
- Применять .user.ini (если используется FPM с поддержкой), либо ini_set() в коде для настройки отдельных параметров при необходимости.
- Контейнеризация: запускать каждый сайт в отдельном контейнере с собственным образом PHP и конфигурацией.
Модель мышления и рекомендации
Ментальная модель: каждый сайт — это «песочница» с собственным окружением. Wrapper-скрипт = переключатель окружения: PHPRC задаёт конфигурацию; опция -d — быстрый фикс конкретной настройки. Если нужно масштабируемость и управление ресурсами — идите в сторону php-fpm.
Роли и задачи
- Системный администратор: настраивает php-fcgi-starter, права, перезагрузку Apache, мониторинг логов.
- Разработчик: проверяет значения PHP-параметров через phpinfo, тестирует совместимость приложения с отключёнными/включёнными настройками.
- DevOps-инженер: оценивает альтернативы (php-fpm, контейнеры), автоматизирует развёртывание конфигураций.
Фактбокс — ключевые переменные из примеров
- PHPRC — путь к каталогу с php.ini для процесса PHP
- PHP_FCGI_MAX_REQUESTS=5000 — максимальное число запросов на процесс (пример)
- PHP_FCGI_CHILDREN=8 — количество дочерних процессов (пример)
Когда этот подход не подходит
- Если нужно более гибкое управление пулом процессов и производительностью — лучше перейти на php-fpm.
- На хостингах с ограничениями доступа к настройкам Apache или файловой системе изменить PHPRC может быть невозможно.
Рекомендации по отладке
- Проверяйте логи Apache (/var/log/apache2/error.log) и системные журналы при ошибках при старте процессов.
- Временно включайте display_errors в php.ini только в тестовой среде, не в продакшене.
- После изменений делайте тестовый запрос к info.php и проверяйте Loaded Configuration File и изменённые директивы.
Ссылки
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Debian: http://www.debian.org/
Краткое резюме
Этот подход позволяет назначать индивидуальные php.ini или менять отдельные параметры для каждого сайта, сохраняя изоляцию конфигураций и удобство тестирования. Для продакшена оцените преимущества php-fpm и контейнеризации.
Примечание: соблюдайте принципы безопасности при редактировании php.ini и не включайте display_errors в рабочей среде, чтобы не раскрывать внутреннюю информацию.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента