Настройка 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.
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.
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.
Ключевые параметры и числа
- 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.
- Проверить совместимость приложений с изменёнными настройками.
Простая методология тестирования (шаги)
- Создать info.php с phpinfo().
- Открыть файл в браузере и посмотреть Server API и Loaded Configuration File.
- Изменить php.ini или добавить -d, перезапустить Apache.
- Повторно открыть info.php и проверить изменения.
- Проверить логи Apache и PHP при ошибках.
Устранение неполадок — быстрый план действий
- Если в phpinfo() не отображается CGI/FastCGI — проверьте, что Apache использует модуль mod_fcgid или настроен соответствующим образом.
- Если Loaded Configuration File не тот, какой ожидали — проверьте переменную PHPRC в скрипте php-fcgi-starter и права доступа к файлу php.ini.
- Если изменения через -d не применяются — убедитесь, что вы перезапустили Apache и что вы редактируете правильный скрипт для нужного сайта.
- При ошибках в php.ini верните предыдущую версию из резервной копии и перезапустите службу.
Примеры тест‑кейсов и критерии приёмки
- Тест‑кейс: info.php показывает Server API = CGI/FastCGI.
- Критерии приёмки: страница загружается без ошибки 500, поле Server API показывает CGI/FastCGI.
- Тест‑кейс: сайт использует собственный php.ini.
- Критерии приёмки: Loaded Configuration File указывает на /srv/www/
/php.ini и директивы в нём активны.
- Критерии приёмки: Loaded Configuration File указывает на /srv/www/
- Тест‑кейс: изменение через -d применено.
- Критерии приёмки: соответствующая директива в phpinfo() отображается с ожидаемым значением.
Полезные ссылки
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
Итог
Настройка PHP через FastCGI позволяет изолировать конфигурации для каждого сайта и гибко управлять параметрами. Для быстрых изменений используйте флаг -d, для большого числа правок — отдельный php.ini. Всегда проверяйте результат через phpinfo() и следите за логами.
Похожие материалы

Charging On Hold на MacBook — быстрое решение

Как получить соты в Minecraft — руководство

Удалить голосовые записи Alexa — инструкция

Как удалить архив в Messenger

COUNTBLANK в Google Sheets — считать пустые ячейки
