PHP (PHP: Hypertext Preprocessor, рекурсивный акроним) — интерпретируемый язык программирования, изначально созданный для динамической веб-разработки. PHP-скрипт выполняется на сервере, а браузеру отдаётся уже готовый HTML. По данным W3Techs, PHP используется на 77% веб-сайтов со известным серверным языком (2024).
Как работает
Типичная конфигурация: nginx или Apache получает HTTP-запрос → передаёт PHP-файлы PHP-FPM (FastCGI Process Manager) → PHP-FPM выполняет скрипт → возвращает HTML обратно веб-серверу → браузеру. PHP-FPM управляет пулом PHP-процессов с настраиваемым числом воркеров (pm.max_children).
Поддерживаемые парадигмы: процедурное, объектно-ориентированное (с PHP 5), функциональное программирование. Типизация: динамическая с постепенным введением строгой типизации (declare(strict_types=1)). Современный PHP (8.x) поддерживает: union types, match expression, named arguments, fibers (корутины), enum.
Основные фреймворки: Laravel (самый популярный, ~2015-н.в.), Symfony (enterprise, ~2005-н.в.), Yii2, CodeIgniter, Slim (микрофреймворк). CMS: WordPress, Drupal, Joomla, Bitrix — все написаны на PHP. PHP-приложения чаще всего используют MySQL или PostgreSQL как СУБД.
История
PHP создан Расмусом Лердорфом в 1994 году как набор Perl-скриптов для анализа посещаемости своего сайта (Personal Home Page Tools). PHP 3.0 (1998) переписан Зеевом Сураски и Анди Гутмансом — добавлена объектная модель. PHP 4.0 (2000) ввёл движок Zend Engine. PHP 5.0 (2004) — полноценная ООП-модель. PHP 7.0 (2015) удвоил производительность по сравнению с PHP 5.x. PHP 8.0 (2020) — JIT-компилятор, union types, named arguments. PHP 8.3 (2023) — типизированные константы классов, readonly-свойства.
PHP в хостинге
PHP — наиболее востребованная конфигурация в хостинге. Большинство провайдеров поддерживают несколько версий PHP параллельно (PHP 7.4, 8.0, 8.1, 8.2, 8.3) и позволяют выбирать версию для каждого домена. На shared hosting PHP работает через суперпроцесс или suexec, на VPS — через PHP-FPM с выделенным пулом на сайт.
PHP: конфигурация php.ini для production
Критичные директивы php.ini для production: memory_limit = 256M (для CMS — 512M), upload_max_filesize = 64M, post_max_size = 64M, max_execution_time = 60 (или 300 для тяжёлых задач), display_errors = Off (ОБЯЗАТЕЛЬНО на production), log_errors = On, error_log = /var/log/php/error.log, opcache.enable = 1, opcache.memory_consumption = 256, session.cookie_secure = 1, session.cookie_httponly = 1.
PHP-FPM pool конфигурация для оптимальной производительности: pm = dynamic, pm.max_children = (RAM - 512MB) / avg_php_process_size_MB. Средний размер PHP-FPM процесса: 30-60 МБ для WordPress, 50-100 МБ для Bitrix. На VPS с 4 ГБ ОЗУ: pm.max_children = (4096 - 512) / 50 ≈ 70 воркеров. Мониторинг: php-fpm status page через nginx — активные соединения, idle workers, медленные запросы.
На что обращать внимание
PHP 7.4 и ниже — конец официальной поддержки, не получают security-патчи. Для production используйте PHP 8.1+. На Docker используют официальные образы php:8.3-fpm. OPcache (кэш байт-кода, встроен с PHP 5.5) обязателен для производительности — без него PHP компилирует скрипты при каждом запросе. Включение: opcache.enable=1 в php.ini. Для WordPress на PHP 8.2-8.3 проверяйте совместимость плагинов.
Настройка PHP-FPM
PHP-FPM конфигурируется через пулы (/etc/php/8.3/fpm/pool.d/www.conf). Ключевые параметры: pm.max_children — максимальное число PHP-воркеров (обычно 5-50 в зависимости от ОЗУ), pm.start_servers — стартовое число воркеров, request_terminate_timeout — таймаут выполнения скрипта. На VPS с 2 ГБ ОЗУ типичное значение pm.max_children = 20 при средней нагрузке PHP-скриптов. Для каждого сайта рекомендуется отдельный пул PHP-FPM с ограничением ресурсов.