Почему Apache нужно остановить и начать (а не перезапустить) для новой версии PHP, чтобы вступить в силу?

на Ubuntu 18 Runing Apache 2.4 с MOD_PHP.

Всякий раз, когда мы получаем обновление пакета для PHP, перезапуская Apache с использованием Apachectl изящных или Apachectl Restart не заканчивается новой версией PHP. Тем не менее, Apachectl STOP , а затем Apachectl Start , перезагружается правильная версия PHP.

Почему это?

0
задан 8 February 2021 в 23:11

2 ответа

Прочитайте остальную часть потока, настоятельно рекомендуется не делать этого.

Вероятно, вы довольно плохо сломали систему, для исправления вам следует запустить временный Ubuntu с USB-устройства.

Как только у вас есть рабочий стол, вы можете использовать (запущенный с USB) установить исходный libc на жесткий диск, вам придется использовать dpkg из временного ubuntu, потому что если вы chroot все будет сломано.

Найдите систему / и установите ее.

Вам нужно будет использовать dpkg

--instdir = dir

и избегать запуска каких-либо скриптов в libc deb, поскольку они, вероятно, каким-либо образом будут зависеть от libc.

-121--910483-

После долгих поисков я запустил alsamixer. Коэффициент усиления микрофона был равен 0. Понятия не имею, как это произошло. Я никогда не менял его. После его увеличения мониторинг снова начинает работать.

Захват также был низким. Я поднял его. Это помогло с громкостью записи микрофона.

Надеюсь, это кому-то поможет.

-121--910842-

При запуске Apache загружает php-модуль (среди многих других модулей). apachectl restart - согласно описанию в man apachectl - просто отправляет SIGHUP в процесс Apache, находящийся в настоящее время в памяти, приказывая ему убить всех своих детей (или, в случае грациозного перезапуска, который SIGUSR1 вместо SIGHUP, просто подождать, пока они закончат), а затем начать заново, раскачивая детей Он не перезагружает двоичные файлы программы с диска.

Если остановить Apache и запустить его снова, все запущенные процессы будут удалены из памяти и снова загружены с диска.

Возможно, имеется некоторая семантическая несогласованность между значением «restart» в команде apachectl restart и командой service apache2 restart (или независимо от того, вызывается ли служба Apache вместо apache2 ). Последний фактически останавливает и запускает службу, в то время как перезапуск apachectl эквивалентен перезагрузке службы apache2 . Обратите внимание на «перезагрузить» вместо «перезапустить».

0
ответ дан 18 March 2021 в 23:36

Потому что это перезагружает сервер Apache. Вы должны также сделать

service php7.4-fpm restart

, чтобы перезапустить сервер приложений (изменить 7,4 (это значение по умолчанию 20.10) к вашей версии; и это также может быть совершенно другой сервис; я использовал FPM в качестве примера).

0
ответ дан 18 March 2021 в 23:36

Другие вопросы по тегам:

Похожие вопросы: