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

Тестирование и настройка PHP-FCGI для каждого веб‑сайта

• 3 min read • DevOps • Обновлено 28 Nov 2025
PHP-FCGI: тестирование и настройка php.ini
PHP-FCGI: тестирование и настройка 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

Важно: phpinfo() показывает текущую конфигурацию PHP и помогает убедиться, что сайт использует ожидаемый механизм исполнения.

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

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

cp /etc/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

И укажите путь /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/bin/php-cgi |

Перезагрузите Apache:

/etc/init.d/httpd reload

Создайте test‑файл 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 показывает загруженный файл конфигурации /var/www/web2/php.ini

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

Если не хочется передавать целый php.ini, можно менять отдельные параметры прямо в скрипте 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/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-cgi -d magic_quotes_gpc=off |

Перезагрузите Apache:

/ect/init.d/httpd reload

(Примечание: проверьте правильность пути и прав на файлы.) Затем снова откройте info.php и найдите строку magic_quotes_gpc — она должна показывать Off:

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

Практическая методология проверки

  1. Создайте файл info.php в корне сайта и откройте его в браузере.
  2. Убедитесь, что Server API показывает CGI/FastCGI.
  3. Проверьте Loaded Configuration File — это должен быть ожидаемый php.ini.
  4. Для одиночных изменений используйте exec /usr/bin/php-cgi -d option=value в php-fcgi-starter.
  5. После изменений перезагрузите Apache и очистите кэш браузера.

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

  • phpinfo() отображается без ошибок.
  • Server API = CGI/FastCGI.
  • Loaded Configuration File указывает на ожидаемый php.ini для данного сайта.
  • Изменённые параметры (через -d или php.ini) видимы в выводе phpinfo().

Чек‑лист для администратора

  • Скопирован php.ini в каталог web2 и установлены права владельца.
  • В php-fcgi-starter указан корректный PHPRC.
  • При необходимости добавлены опции -d в exec-команду.
  • Перезагружен Apache: /etc/init.d/httpd reload.
  • Проверен вывод phpinfo() на целевом сайте.

Факт‑бокс с ключевыми числами

  • PHP_FCGI_MAX_REQUESTS обычно устанавливают в тысячи, чтобы избежать утечек памяти процессами.
  • PHP_FCGI_CHILDREN устанавливает количество дочерних процессов в режиме prefork для обработки запросов.

(Значения подбирайте под нагрузку и доступные ресурсы сервера.)

Советы по устранению неполадок

  • Если phpinfo() не открывается, проверьте логи Apache и права на файл info.php.
  • Если Server API не CGI/FastCGI, проверьте, что виртуальный хост использует нужный wrapper‑скрипт.
  • Если Loaded Configuration File не совпадает с ожидаемым, убедитесь, что PHPRC указывает на каталог с php.ini и у процесса есть права на чтение.
  • После изменения php-fcgi-starter убедитесь, что скрипт исполняемый (chmod +x).

Важно: изменение глобального /etc/php.ini затрагивает все сайты, поэтому для изолированной настройки лучше использовать локальные php.ini или -d опции.

Сравнение подходов

  • Отдельный php.ini на сайт: полный контроль, удобно для крупных и изолированных проектов. Минус — дублирование и необходимость поддержки нескольких файлов.
  • Параметры через -d: удобно для единичных настроек и быстрого тестирования. Минус — не подходит для большого числа правок.

Ссылки

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

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

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