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

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. В выводе phpinfo() в строке Server API вы должны увидеть CGI/FastCGI.

Вывод phpinfo() с строкой

Важно: если вы видите Server API другое (например Apache 2.0 Handler), значит сайт не использует FastCGI и нужно проверить конфигурацию Apache и модуль mod_fcgid.

5 Кастомный php.ini для каждого веб-сайта

Так как для каждого сайта используется свой wrapper-скрипт php-fcgi-starter, вы можете назначать разные php.ini для разных сайтов.

Пример: скопируем системный php.ini в директорию сайта /var/www/web2/ и назначим владельца web2:

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

И пропишите директорию с php.ini в переменной PHPRC:

#!/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 и найдите строку Loaded Configuration File — она должна указывать на /var/www/web2/php.ini.

phpinfo() показывает загруженный php.ini в /var/www/web2/php.ini

Совет: держите кастомный php.ini под управлением системы контроля версий или делайте заметки о внесённых изменениях, чтобы при обновлениях пакетов не потерять настройки.

6 Изменение отдельных настроек PHP

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

phpinfo() показывает magic_quotes_gpc = Off

Примечание: флаг -d работает как для булевых, так и для строковых/числовых значений. Для нескольких переопределений перечисляйте их в командной строке.

Критерии приёмки

  • В тестовом info.php в поле Server API отображается CGI или FastCGI.
  • Для сайта с кастомным php.ini поле Loaded Configuration File указывает путь к нужному php.ini.
  • При установке параметра через -d соответствующая директива в phpinfo() отражает новое значение.
  • После изменений Apache перегружен и новые процессы PHP поднимаются с нужными параметрами.

Чеклист (роль: системный администратор)

  • Создать info.php в директории сайта.
  • Проверить Server API через браузер.
  • Скопировать /etc/php.ini в директорию сайта при необходимости.
  • Установить PHPRC в php-fcgi-starter и выставить права владельца.
  • Для одиночных настроек добавить -d в exec-строку.
  • Перезагрузить Apache и повторно проверить phpinfo().

Быстрая методика (пошагово)

  1. Разверните php-fcgi-скрипт для сайта: /var/www/php-fcgi-scripts//php-fcgi-starter.
  2. Укажите PHPRC=/path/to/site/ или оставьте /etc/ и добавьте нужные -d опции.
  3. Перезагрузите httpd: /etc/init.d/httpd reload.
  4. Откройте http:///info.php и проверьте Server API, Loaded Configuration File, требуемые директивы.

Когда это не работает — типичные причины и решения

  • Проблема: в Server API по-прежнему Apache Handler.

    • Причина: не подключен или не настроен модуль mod_fcgid (или эквивалент). Проверьте конфигурацию Apache и логи.
  • Проблема: Loaded Configuration File не указывает на кастомный php.ini.

    • Причина: PHPRC не экспортирован или путь неверный. Проверьте права доступа и переменную PHPRC в том же процессе, где запускается php-cgi.
  • Проблема: флаг -d не применяется.

    • Причина: wrapper-скрипт не обновлён на используемых процессах. Перезапустите демоны FastCGI/Apache и убедитесь, что используется обновлённый скрипт.
  • Проблема: изменения php.ini не вступают в силу для уже существующих процессов.

    • Решение: завершите старые процессы PHP-FCGI/перезапустите Apache, чтобы поднялись новые процессы с обновлёнными настройками.

Короткий глоссарий

  • PHPRC: переменная окружения, указывающая директорию с php.ini.
  • php-fcgi-starter: wrapper-скрипт, запускающий php-cgi для конкретного сайта.
  • php-cgi: CGI-исполняемый файл PHP, используемый с FastCGI.

Тестовые сценарии / Критерии приёмки

  • Тест: разместить info.php и открыть в браузере — ожидаемый результат: phpinfo() доступен.
  • Тест: назначить PHPRC=/var/www/web2/ и перезагрузить — ожидаемый результат: Loaded Configuration File = /var/www/web2/php.ini.
  • Тест: добавить exec /usr/bin/php-cgi -d some_setting=value — ожидаемый результат: в phpinfo() значение some_setting равно value.

Ссылки

Краткая сводка

  • Используйте отдельные php-fcgi-starter скрипты для каждого сайта, чтобы задать индивидуальные настройки PHP.
  • PHPRC указывает директорию с php.ini; флаг -d позволяет переопределять отдельные директивы.
  • Всегда перезагружайте Apache и проверяйте phpinfo() после изменения конфигурации.

Важно: сохраняйте резервные копии оригинального php.ini перед изменениями и проверяйте права доступа на файлы.

Поделиться: 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 быстро