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

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

3 min read Серверы Обновлено 27 Sep 2025
PHP-FastCGI: тест и настройка для сайтов
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.

/Скриншот вывода 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.

/Скриншот phpinfo показывающий загруженный 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.

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

  1. Подготовка: резервные копии и тестовая среда.
  2. Локальная конфигурация: создать /var/www/siteN/php.ini или добавить -d в php-fcgi-starter.
  3. Перезагрузка и первичная проверка phpinfo().
  4. Мониторинг логов и нагрузочного теста.

Роль-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 и обновляйте модули безопасности.

Ссылки

Об авторе

Falko Timme — владелец Timme Hosting, ведущий мейнтейнер HowtoForge (с 2005) и один из разработчиков ISPConfig. Также автор вклада в книгу O’Reilly по системному администрированию Linux.

Сводка

  • Тестирование через phpinfo() подтверждает, работает ли PHP через CGI/FastCGI.
  • Для каждого сайта можно задать отдельный php.ini или менять отдельные опции через -d.
  • Всегда делайте резервные копии и проверяйте логи после изменений.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Установка Asterisk для первой PBX
Телефония

Установка Asterisk для первой PBX

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

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

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

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

RSS из темы форума через Blogger и Gmail
Руководство

RSS из темы форума через Blogger и Gmail

Установка OCS Inventory NG Server 2 на CentOS 5.5
Linux

Установка OCS Inventory NG Server 2 на CentOS 5.5

Функция CHAR в Google Sheets: вставка символов по коду
Google Таблицы

Функция CHAR в Google Sheets: вставка символов по коду