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

PHP-FastCGI: тестирование и индивидуальные php.ini для сайтов

3 min read PHP Обновлено 01 Oct 2025
PHP-FastCGI: тест и кастомный php.ini
PHP-FastCGI: тест и кастомный php.ini

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

4 Тестирование

Теперь создаём простой PHP-файл для тестирования на сайте, например на www.example1.com.

Создайте файл:

vi /srv/www/web1/web/info.php

Вставьте в файл следующее:

Откройте в браузере адрес http://www.example1.com/info.php. При корректной настройке вывод phpinfo() должен показаться похожим на ожидаемый, и в строке Server API вы увидите CGI или FastCGI.

Вывод phpinfo() с указанием Server API: CGI/FastCGI

Если страница не открывается или отсутствует информация о FastCGI, проверьте логи Apache и права на файлы.

5 Индивидуальный php.ini для каждого сайта

Поскольку для каждого сайта используется собственный скрипт-обёртка php-fcgi-starter, можно назначать разные php.ini на сайт. Пример: скопируем системный php.ini в директорию сайта www.example2.com и назначим владельца web2.

cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini

Отредактируйте /srv/www/web2/php.ini по своему усмотрению.

Откройте скрипт-обёртку для сайта web2:

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

И укажите путь к директории с php.ini в переменной PHPRC:

#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Перезапустите Apache:

/etc/init.d/apache2 restart

Создайте тестовый phpinfo() для www.example2.com:

vi /srv/www/web2/web/info.php

Откройте http://www.example2.com/info.php и убедитесь, что в строке Loaded Configuration File указан путь /srv/www/web2/php.ini.

Строка Loaded Configuration File указывает на /srv/www/web2/php.ini

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

Если не требуется целый php.ini, можно менять отдельные параметры, добавляя ключ -d к команде запуска php-cgi в скрипте-обёртке. Например, чтобы отключить magic_quotes_gpc для сайта www.example2.com, измените скрипт следующим образом:

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Содержимое скрипта:

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
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/apache2 restart

Откройте http://www.example2.com/info.php и проверьте, что magic_quotes_gpc отображается как Off.

Вывод phpinfo() с magic_quotes_gpc = Off

Методология и проверка изменений

Мини-методология:

  1. Создать резервные копии оригинальных файлов конфигурации.
  2. Внести минимальные необходимые изменения в скрипт-обёртку или в локальный php.ini.
  3. Перезапустить веб-сервер.
  4. Проверить phpinfo() и логи на предмет ошибок.
  5. Наблюдать поведение приложения в течение изменения нагрузки.

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

  • phpinfo() показывает ожидаемый Server API и/или Loaded Configuration File.
  • Изменённый параметр PHP реально применён (см. вывод phpinfo()).
  • В логах Apache/PHP отсутствуют критические ошибки после изменения.

Контрольные тесты и сценарии приёмки

Тест-кейсы:

  • Открыть /info.php и проверить статус HTTP 200.
  • Убедиться, что Server API равен CGI или FastCGI.
  • Для локального php.ini — проверить Loaded Configuration File указывает на файл в каталоге сайта.
  • Для отдельных параметров — найти в phpinfo() соответствующую строку и подтвердить значение.

Роли и чек-лист по задачам

Для системного администратора:

  • Сделать резервные копии /etc/php5/fastcgi/php.ini и скриптов запуска.
  • Настроить владельца и права доступа для локального php.ini.
  • Перезапустить Apache и проверить логи.

Для разработчика сайта:

  • Проверить совместимость приложения с изменёнными настройками PHP.
  • Протестировать функциональность приложения после переключения php.ini.

Типичные проблемы и пути решения

  • Страница info.php не открывается:

    • Проверьте права на файл и директорию.
    • Посмотрите error_log Apache.
  • PHP не использует локальный php.ini:

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

    • Проверьте синтаксис ключа и значение параметра.
    • Убедитесь, что перезапуск сервера выполнен и нет других перекрывающих настроек.

Факт-бокс

  • Рекомендуемое значение PHP_FCGI_MAX_REQUESTS: наблюдайте и адаптируйте под нагрузку.
  • PHP_FCGI_CHILDREN: стартовое значение 4–8 для большинства небольших сайтов.
  • Обновления PHP могут менять поведение CGI/FastCGI — тестируйте после обновлений.

Ссылки и ресурсы

Итог: используя обёртки php-fcgi-starter и переменную PHPRC или ключ -d, вы можете гибко управлять конфигурацией PHP на уровне каждого сайта. Всегда тестируйте изменения по шагам и следите за логами.

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

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

Вернуть MSN как домашнюю страницу — Chrome, Edge, Firefox, Safari
Браузеры

Вернуть MSN как домашнюю страницу — Chrome, Edge, Firefox, Safari

Sky Go и VPN: как восстановить доступ
Технологии

Sky Go и VPN: как восстановить доступ

Как отсоединиться от Docker-контейнера, не останавливая его
Docker

Как отсоединиться от Docker-контейнера, не останавливая его

Сканирование QR в браузере: jsQR + Web Worker
Веб-разработка

Сканирование QR в браузере: jsQR + Web Worker

Карьера в техподдержке: как начать и преуспеть
Карьера

Карьера в техподдержке: как начать и преуспеть

Как изменить геймертег на Xbox
Игры

Как изменить геймертег на Xbox