
Перезапуск PHP на Ubuntu необходим при изменении конфигурации, обновлении модулей или устранении ошибок в работе веб-сервера. На системах с PHP-FPM и Apache или Nginx методы перезапуска различаются, и выбор правильного подхода гарантирует минимальное время простоя сервиса.
Для систем с PHP-FPM используется команда systemctl restart phpX.Y-fpm, где X.Y соответствует установленной версии PHP. Проверка статуса выполняется через systemctl status phpX.Y-fpm, что позволяет убедиться в корректном запуске демона и отсутствии критических ошибок в логах.
Если PHP интегрирован с Apache, изменение конфигурационных файлов требует перезапуска сервера командой sudo systemctl restart apache2. Для Nginx достаточно перезапустить PHP-FPM, а веб-сервер подхватит обновленные настройки автоматически, что ускоряет процесс и снижает риск ошибок.
Перед перезапуском рекомендуется сохранять активные сессии и проверять логи ошибок, расположенные в /var/log/phpX.Y-fpm.log или /var/log/apache2/error.log. Эти действия позволяют быстро выявить и исправить потенциальные проблемы после внесения изменений в конфигурацию PHP.
Перезапуск PHP на Ubuntu: пошаговое руководство
Для начала определите установленную версию PHP командой php -v. Она понадобится для выбора корректного сервиса при перезапуске.
На Ubuntu PHP чаще всего работает через PHP-FPM. Перезапуск выполняется командой: sudo systemctl restart php7.4-fpm, где 7.4 замените на вашу версию. Для проверки статуса используйте sudo systemctl status php7.4-fpm.
Если PHP интегрирован с Apache, необходимо перезапустить веб-сервер: sudo systemctl restart apache2. Для Nginx достаточно перезапустить PHP-FPM, затем проверить конфигурацию Nginx командой sudo nginx -t и выполнить sudo systemctl reload nginx.
Для многоверсионной среды Ubuntu можно управлять несколькими версиями PHP через update-alternatives. Переключение версии выполняется командой: sudo update-alternatives --config php, после чего перезапустите соответствующий сервис PHP-FPM.
Ошибки при перезапуске фиксируются в логах: /var/log/php7.4-fpm.log или в системном журнале journalctl -xe. Анализ этих логов помогает выявить конфигурационные ошибки или проблемы с модулем PHP.
Для автоматизации перезапуска после изменений конфигурации используйте sudo systemctl reload php7.4-fpm, что применяет настройки без полной остановки сервиса, минимизируя простой веб-сервера.
Проверка текущей версии PHP в системе

Для точного определения установленной версии PHP используйте команду php -v в терминале. Она выведет версию интерпретатора, дату сборки и информацию о загруженных расширениях.
Если система использует несколько версий PHP одновременно, уточните активную версию для веб-сервера. Для Apache выполните sudo a2query -m php, а для Nginx с PHP-FPM – systemctl status php*-fpm, чтобы увидеть, какая служба обслуживает запросы.
Для проверки версии конкретного модуля PHP примените php -m. Список расширений помогает убедиться, что критические библиотеки активированы, особенно после установки или обновления PHP.
Дополнительно можно создать файл info.php в директории веб-сервера с содержимым <?php phpinfo(); ?>. Открытие этого файла в браузере отображает полную конфигурацию PHP, включая путь к ini-файлам, загруженные модули и настройки окружения.
После проверки версии фиксируйте результаты. Это позволит корректно сопоставлять инструкции по перезапуску с актуальной сборкой PHP и избежать конфликтов между разными версиями.
Определение активного PHP-процесса

Для корректного перезапуска PHP важно точно определить активный процесс. В Ubuntu PHP чаще всего работает как FPM (FastCGI Process Manager) или через модуль Apache.
Пошаговый метод определения:
- Проверка процессов PHP-FPM:
- Выполните команду:
ps aux | grep php-fpm - Вы увидите список процессов с PID и пользователем. Основной процесс обычно один, дочерние процессы – несколько.
- Выполните команду:
- Проверка модулей Apache с PHP:
- Если используется
mod_php, выполните:apachectl -M | grep php - Если модуль загружен, PHP обрабатывается напрямую через Apache, а не отдельным процессом FPM.
- Если используется
- Использование команды
systemctlдля сервисов PHP:- Список сервисов PHP-FPM:
systemctl list-units | grep php - Состояние активного процесса:
systemctl status php7.4-fpm(замените версию PHP на актуальную)
- Список сервисов PHP-FPM:
- Определение порта, на котором слушает PHP-FPM:
- Выполните:
netstat -plnt | grep phpилиss -plnt | grep php - Вы увидите порт и PID процесса, что полезно для диагностики и перезапуска.
- Выполните:
После выявления активного процесса рекомендуется фиксировать его PID для безопасного завершения или перезапуска без нарушения работы других служб.
Перезапуск PHP-FPM через systemctl
Для управления PHP-FPM на Ubuntu используется команда systemctl. Сначала определите точную версию PHP, установленную на сервере, выполнив php -v. Например, если используется PHP 8.1, сервис будет называться php8.1-fpm.
Чтобы перезапустить PHP-FPM и применить изменения конфигурации, используйте команду:
sudo systemctl restart php8.1-fpm
После выполнения перезапуска убедитесь, что сервис работает корректно с помощью:
sudo systemctl status php8.1-fpm
sudo journalctl -u php8.1-fpm
Для минимизации времени простоя рекомендуется использовать reload, который перечитывает конфигурацию без полного перезапуска:
sudo systemctl reload php8.1-fpm
В случаях обновления PHP или установки новых расширений перезапуск с restart является обязательным, чтобы изменения вступили в силу.
Перезапуск Apache с модулем PHP
Для корректного применения изменений в конфигурации PHP необходимо перезапустить веб-сервер Apache. На Ubuntu версии 20.04 и выше Apache работает через systemd, что обеспечивает управление сервисами с помощью команды systemctl.
Чтобы проверить статус Apache перед перезапуском, используйте:
sudo systemctl status apache2
Если активен процесс, переходите к остановке и запуску сервиса:
sudo systemctl restart apache2
Для перезапуска модуля PHP через Apache можно использовать альтернативу через a2enmod и a2dismod при необходимости изменения версии PHP:
| Команда | Описание |
|---|---|
sudo a2dismod php7.4 |
Отключает текущий модуль PHP 7.4 |
sudo a2enmod php8.1 |
Активирует модуль PHP 8.1 |
sudo systemctl restart apache2 |
Применяет изменения, перезапуская Apache |
После перезапуска убедитесь в корректной работе PHP через команду:
php -v
Для диагностики ошибок Apache используйте лог-файлы:
/var/log/apache2/error.log
Если необходимо мягкое обновление без полной остановки сервера, применяйте:
sudo systemctl reload apache2
Эта команда перечитывает конфигурацию, не разрывая активные соединения, что минимизирует простои при обновлении PHP.
Перезапуск Nginx с PHP-FPM

Для корректной работы веб-сервера Nginx с PHP необходимо перезапустить PHP-FPM после изменения конфигурации PHP или Nginx. На Ubuntu служба PHP-FPM обычно именуется в формате phpX.Y-fpm, где X.Y – версия PHP. Например, для PHP 8.1 команда будет sudo systemctl restart php8.1-fpm.
Перезапуск Nginx выполняется командой sudo systemctl restart nginx. Перед этим рекомендуется проверить конфигурацию командой sudo nginx -t. В случае ошибки конфигурация Nginx не будет перезапущена, и ошибки отобразятся в терминале. Логи ошибок находятся в /var/log/nginx/error.log.
Для минимизации простоев можно использовать sudo systemctl reload php8.1-fpm и sudo systemctl reload nginx, что применяет изменения конфигурации без полной остановки служб.
После перезапуска убедитесь, что PHP обрабатывается корректно, создав файл info.php в корне сайта с содержимым <?php phpinfo(); ?> и открыв его через браузер. Если страница загружается с информацией о PHP, перезапуск выполнен успешно.
Очистка кэша PHP Opcache перед перезапуском
Перед перезапуском PHP рекомендуется очистить кэш Opcache, чтобы изменения в коде сразу вступили в силу. Для этого можно использовать встроенные функции PHP или командную строку.
Если доступен скрипт на сервере, создайте файл opcache_reset.php с содержимым:
<?php
opcache_reset();
echo "Opcache очищен";
?>
После запуска через браузер или командную строку кэш сбросится. Убедитесь, что скрипт удалён после использования во избежание потенциальных угроз безопасности.
Для серверов с CLI можно очистить кэш напрямую через PHP:
php -r 'opcache_reset();'
На системах с PHP-FPM очистка кэша через CLI эффективна только если CLI и FPM используют один конфигурационный файл php.ini. Иначе кэш FPM останется неизменным.
После очистки Opcache рекомендуется выполнить перезапуск соответствующего PHP-сервиса:
sudo systemctl restart php8.1-fpm
или для Apache:
sudo systemctl restart apache2
Эти шаги гарантируют, что все изменения кода будут загружены в память без старых закешированных версий, а производительность приложения останется стабильной.
Проверка состояния PHP после перезапуска

После перезапуска PHP важно убедиться, что служба работает корректно и конфигурация загружена правильно. Для этого используйте следующие шаги:
-
Проверка статуса службы PHP-FPM (или Apache с модулем PHP):
- Для PHP-FPM:
sudo systemctl status php8.2-fpm - Для Apache с mod_php:
sudo systemctl status apache2 - Обратите внимание на строки
Active: active (running)и отсутствие ошибок в журнале.
- Для PHP-FPM:
-
Проверка версии PHP через командную строку:
- Команда:
php -v
- Команда:
-
Проверка загруженных модулей PHP:
- Команда:
php -m - Проверьте наличие ключевых расширений:
curl,mbstring,mysqliи других, необходимых для ваших приложений.
- Команда:
-
Создание тестового PHP-файла для проверки через веб-сервер:
- Создайте файл
/var/www/html/info.phpс содержимым:<?php phpinfo(); ?> - Откройте файл в браузере:
http://ваш_сервер/info.php - Проверьте корректное отображение конфигурации, версию PHP и активные расширения.
- Создайте файл
-
Проверка логов ошибок PHP:
- Логи PHP-FPM:
/var/log/php8.2-fpm.log - Логи Apache:
/var/log/apache2/error.log - Ищите строки с
FatalилиWarning, чтобы вовремя выявить проблемы после перезапуска.
- Логи PHP-FPM:
Регулярное выполнение этих проверок минимизирует риск непредвиденных сбоев в работе PHP после перезапуска и гарантирует стабильность веб-приложений.
Диагностика ошибок при неудачном перезапуске
Логи ошибок PHP находятся в файле /var/log/php7.4-fpm.log. Внимательно изучите строки с пометкой [ERROR] или [WARNING]. Частые причины сбоев: синтаксические ошибки в php.ini или подключаемых модулях, неправильные права на сокеты, конфликт портов с другим процессом.
Для проверки конфигурации используйте команду php-fpm7.4 -t. Она анализирует php.ini и все подключенные конфигурационные файлы. Ошибки синтаксиса будут указаны с точным номером строки и описанием.
Если перезапуск через systemctl restart php7.4-fpm не удается, просмотрите системный журнал: journalctl -xe. Там фиксируются критические сбои, такие как невозможность открыть сокет, недостаток памяти или конфликт прав доступа к директориям /run/php/.
Для изоляции проблемы временно запустите PHP-FPM в режиме отладки: php-fpm7.4 -F -R. Это запустит процесс на переднем плане и покажет все ошибки сразу в консоли, что ускоряет выявление причины.
После устранения ошибок выполните повторную проверку конфигурации и только затем перезапуск. Если служба стартует, проверьте доступность PHP через php -v и веб-сервер, чтобы убедиться, что модуль корректно обрабатывает запросы.
Вопрос-ответ:
Как перезапустить PHP на Ubuntu без перезагрузки всей системы?
На Ubuntu можно перезапустить PHP через командную строку с помощью сервиса, который отвечает за его работу. Если используется PHP-FPM, команда будет выглядеть так: sudo systemctl restart php7.4-fpm, где «7.4» заменяется на вашу версию PHP. Для Apache достаточно выполнить sudo systemctl restart apache2, так как PHP работает как модуль веб-сервера. Такой подход позволяет применить новые настройки без остановки остальных сервисов.
Какая команда покажет текущую версию PHP и статус его сервиса?
Чтобы узнать версию PHP, можно использовать команду php -v, которая выводит номер установленной версии и информацию о сборке. Для проверки состояния сервиса PHP-FPM применяется sudo systemctl status php7.4-fpm. Команда покажет, активен ли процесс, сколько времени он работает и последние записи в логах. Эти сведения помогают понять, корректно ли работает PHP после изменений конфигурации.
Что делать, если после изменения php.ini сайт перестал работать?
Первым шагом нужно убедиться, что изменения в php.ini не содержат ошибок. Для этого можно использовать команду php -m или проверить логи веб-сервера: sudo journalctl -u apache2 или sudo journalctl -u php7.4-fpm. Если ошибка обнаружена, нужно откатить проблемные строки или исправить синтаксис. После этого выполняется перезапуск PHP, чтобы новые настройки вступили в силу. Такой подход позволяет быстро восстановить работу сайта без полного восстановления системы.
Можно ли перезапустить PHP для нескольких версий одновременно?
Да, на одной системе может быть несколько версий PHP. Каждая версия имеет собственный сервис, например php7.4-fpm и php8.1-fpm. Для перезапуска конкретной версии используется команда sudo systemctl restart php7.4-fpm. Если нужно обновить настройки сразу для всех версий, можно выполнить перезапуск поочередно для каждого сервиса. Важно убедиться, что веб-сервер использует нужную версию для конкретного сайта или приложения.
