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

Тестирование и индивидуальные настройки PHP для сайтов

4 min read PHP Обновлено 19 Nov 2025
PHP: тестирование и локальные php.ini
PHP: тестирование и локальные php.ini

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

Создаём небольшой тестовый PHP-файл для сайта, например www.example1.com. Это помогает убедиться, что PHP запускается через CGI/FastCGI и что конфигурация применяется корректно.

Откройте файл для редактирования:

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

Вставьте код:

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

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

Важно: если вместо CGI/FastCGI вы видите Apache модуль (например, Apache 2.0 Handler), это значит, что PHP работает как модуль, а не через FastCGI — проверьте конфигурацию Apache и модуль mod_fcgid.

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

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

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

Вставьте или поправьте строку PHPRC, чтобы указывать путь к директории с php.ini:

#!/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:

/et c/init.d/httpd reload

(если в системе другой путь к скрипту управления службой — используйте соответствующий для вашей ОС).

Создайте аналогичный info.php для www.example2.com:

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

Откройте http://www.example2.com/info.php и проверьте строку Configuration File (php.ini) Path — она должна указывать /var/www/web2/php.ini:

phpinfo() — путь к файлу конфигурации /var/www/web2/php.ini

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

6 Изменение одной настройки PHP

Если не нужно полностью заменять php.ini, можно изменить отдельные директивы, добавив ключ -d к вызову php-cgi в php-fcgi-starter. Пример: отключим magic_quotes_gpc для сайта web2.

Откройте стартер:

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

Измените файл так, чтобы exec запускал php-cgi с нужным параметром:

#!/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:

/et c/init.d/httpd reload

Затем обновите http://www.example2.com/info.php и найдите строку magic_quotes_gpc — она должна показать Off:

phpinfo() — настройка magic_quotes_gpc: Off

Примечание: ключи -d имеют приоритет над php.ini и удобны для быстрых правок на уровне процесса.

7 Ссылки

Мини-методология: быстрая проверка конфигурации

  1. Создайте info.php с phpinfo().
  2. Откройте в браузере и найдите Server API и Configuration File Path.
  3. При несоответствии проверьте php-fcgi-starter: PHPRC, параметры exec и права доступа к php.ini.
  4. После правок перезагрузите httpd и очистите кеш браузера.

Чеклист по ролям

  • Администратор сервера:

    • Проверить права владельца и группу на локальные php.ini.
    • Убедиться, что PHPRC указывает на директорию с корректным php.ini.
    • Логировать перезапуски и изменения.
  • Разработчик/DevOps:

    • Использовать -d для тестовых изменений.
    • Хранить копии php.ini в системе контроля версий.
  • Тестировщик:

    • Проверить phpinfo() и конкретные директивы (timezone, memory_limit, display_errors).
    • Описать шаги по воспроизведению в баг-репорте.

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

  • Неправильные права доступа к /var/www/webX/php.ini. Проверьте владельца и права.
  • PHPRC указывает на директорию, но внутри нет php.ini или файл не читается.
  • Apache продолжает использовать модульный PHP (libapache2-mod-php) — отключите его, если нужен только FastCGI.
  • Параметры в скрипте стартер некорректны (опечатки, неправильный путь к php-cgi).

Рекомендации по безопасности

  • Не храните чувствительные данные (пароли, ключи) в php.ini в открытом виде; используйте защищённые хранилища.
  • Устанавливайте минимально необходимые права доступа на файлы конфигурации (например, 640 или 600 при необходимости).
  • Ограничьте количество дочерних процессов и максимальное число запросов (PHP_FCGI_CHILDREN, PHP_FCGI_MAX_REQUESTS) под нагрузку сервера.

Краткий словарь

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

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

  • На странице info.php видно Server API: CGI/FastCGI.
  • Configuration File (php.ini) Path указывает на ожидаемый локальный файл.
  • Изменённые директивы отражаются в выводе phpinfo().

Итог

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

Важно: документируйте изменения и тестируйте на этапе разработки перед деплоем в продакшен.

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

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

Как сбросить Logitech G Pro Wireless
Гайды

Как сбросить Logitech G Pro Wireless

Отключить виджеты в Windows 11 — 3 способа
Windows

Отключить виджеты в Windows 11 — 3 способа

Отключить автозапуск видео в Facebook (Android/iOS)
Мобильные инструкции

Отключить автозапуск видео в Facebook (Android/iOS)

Скопировать TWRP‑резервные копии на ПК
Android.

Скопировать TWRP‑резервные копии на ПК

FTP в Linux: подключение, команды и безопасность
Linux

FTP в Linux: подключение, команды и безопасность

Как сохранить GIF из Twitter
Инструкции

Как сохранить GIF из Twitter