Гид по технологиям

PHP-FastCGI: тестирование и настройки php.ini

4 min read DevOps Обновлено 27 Nov 2025
PHP-FastCGI: тестирование и настройки php.ini
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 с указанным 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:

Скриншот phpinfo с 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.

Скриншот phpinfo с параметром 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

Критерии приёмки (тесты)

  1. Сервер API отображает CGI/FastCGI в phpinfo для целевого сайта.
  2. Loaded Configuration File указывает на ожидаемый php.ini в каталоге сайта.
  3. Изменённая настройка (например magic_quotes_gpc) отражается как Off/On в выводе phpinfo.
  4. После перезагрузки 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 может быть невозможно.

Рекомендации по отладке

  1. Проверяйте логи Apache (/var/log/apache2/error.log) и системные журналы при ошибках при старте процессов.
  2. Временно включайте display_errors в php.ini только в тестовой среде, не в продакшене.
  3. После изменений делайте тестовый запрос к info.php и проверяйте Loaded Configuration File и изменённые директивы.

Ссылки

Краткое резюме

Этот подход позволяет назначать индивидуальные php.ini или менять отдельные параметры для каждого сайта, сохраняя изоляцию конфигураций и удобство тестирования. Для продакшена оцените преимущества php-fpm и контейнеризации.

Примечание: соблюдайте принципы безопасности при редактировании php.ini и не включайте display_errors в рабочей среде, чтобы не раскрывать внутреннюю информацию.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро