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

Настройка PHP (FastCGI) для отдельных веб‑сайтов на Apache

4 min read Серверы Обновлено 21 Oct 2025
PHP-FastCGI на Apache — настройка и тесты
PHP-FastCGI на Apache — настройка и тесты

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

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

Сначала создадим небольшой PHP‑тестовый файл на сайте, например www.example1.com.

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

Затем откройте в браузере http://www.example1.com/info.php. Если всё настроено правильно, вывод будет похож на изображение ниже — в строке Server API вы увидите CGI/FastCGI.

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

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

Поскольку для каждого сайта используется собственный скрипт‑обёртка php-fcgi-starter, можно задавать отдельный php.ini. В примере копируем стандартный php.ini в директорию сайта /srv/www/web2/ и даём права владельца web2: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

и укажите путь /srv/www/web2/ в переменной 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:

systemctl restart apache2.service

Создайте файл info.php для www.example2.com:

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

Откройте http://www.example2.com/info.php. В строке Loaded Configuration File должно показываться /srv/www/web2/php.ini.

phpinfo показывающий путь к загруженному php.ini в /srv/www/web2

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

Вместо передачи целого php.ini можно изменить отдельные настройки прямо в скрипте-обёртке, добавив ключ -d к PHP‑исполняемому файлу. Например, чтобы отключить 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:

systemctl restart apache2.service

Затем снова откройте info.php в браузере и найдите строку magic_quotes_gpc — теперь она должна показывать Off.

phpinfo показывающий magic_quotes_gpc = Off

Ключевые параметры и числа

  • PHP_FCGI_MAX_REQUESTS — примерное значение в примерах: 5000.
  • PHP_FCGI_CHILDREN — число дочерних процессов в примерах: 8.

Эти значения служат для иллюстрации и могут быть адаптированы под нагрузку вашего сервера.

Когда использовать отдельный php.ini, а когда флаг -d

  • Отдельный php.ini удобен, когда нужно поменять множество настроек или использовать разные расширения для сайта.
  • Флаг -d подходит для быстрой правки одной‑двух директив без копирования целого файла.
flowchart TD
  A[Нужно изменить настройки PHP?] --> B{Много настроек или разные расширения?}
  B -- Да --> C[Создать отдельный php.ini в корне сайта и задать PHPRC]
  B -- Нет --> D[Добавить ключи -d в php-fcgi-starter]
  C --> E[Перезапустить Apache и проверить phpinfo]
  D --> E

Альтернативные подходы

  • PHP‑FPM с пулом на сайт: современная альтернатива FastCGI/mod_fcgid, позволяет более гибко управлять процессами.
  • Запуск через systemd‑сервисы с конфигурацией per‑pool — применимо, если требуется изоляция с учётом ресурсов.

Контрольный список ролей

  • Системный администратор:

    • Сделать резервные копии /etc/php5/fastcgi/php.ini и скриптов php-fcgi-starter.
    • Корректно выставить права и владельца для файлов php.ini в каталоге сайта.
    • Перезапустить Apache и проверить логи (error.log, access.log).
  • Веб‑разработчик:

    • Указать необходимые директивы и расширения в php.ini или через -d.
    • Проверить совместимость приложений с изменёнными настройками.

Простая методология тестирования (шаги)

  1. Создать info.php с phpinfo().
  2. Открыть файл в браузере и посмотреть Server API и Loaded Configuration File.
  3. Изменить php.ini или добавить -d, перезапустить Apache.
  4. Повторно открыть info.php и проверить изменения.
  5. Проверить логи Apache и PHP при ошибках.

Устранение неполадок — быстрый план действий

  1. Если в phpinfo() не отображается CGI/FastCGI — проверьте, что Apache использует модуль mod_fcgid или настроен соответствующим образом.
  2. Если Loaded Configuration File не тот, какой ожидали — проверьте переменную PHPRC в скрипте php-fcgi-starter и права доступа к файлу php.ini.
  3. Если изменения через -d не применяются — убедитесь, что вы перезапустили Apache и что вы редактируете правильный скрипт для нужного сайта.
  4. При ошибках в php.ini верните предыдущую версию из резервной копии и перезапустите службу.

Примеры тест‑кейсов и критерии приёмки

  • Тест‑кейс: info.php показывает Server API = CGI/FastCGI.
    • Критерии приёмки: страница загружается без ошибки 500, поле Server API показывает CGI/FastCGI.
  • Тест‑кейс: сайт использует собственный php.ini.
    • Критерии приёмки: Loaded Configuration File указывает на /srv/www//php.ini и директивы в нём активны.
  • Тест‑кейс: изменение через -d применено.
    • Критерии приёмки: соответствующая директива в phpinfo() отображается с ожидаемым значением.

Полезные ссылки

Итог

Настройка PHP через FastCGI позволяет изолировать конфигурации для каждого сайта и гибко управлять параметрами. Для быстрых изменений используйте флаг -d, для большого числа правок — отдельный php.ini. Всегда проверяйте результат через phpinfo() и следите за логами.

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

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android