Запустите PHP5.6 и PHP7.2 параллельно - переход на 5.6 (только для apache2) не работает

следуя этому руководству, чтобы переключаться между версиями php: (7.2 и 5.6):

http://mehedi.info/2017/06/07/use-php-5-6-php-7-0-alongside-one-another-ubuntu/

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6 php5.6-mysql php5.6-mbstring libapache2-mod-php5.6

С php5.6 на php7.2:

sudo a2dismod php5.6 ; sudo a2enmod php7.2 ; sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php7.2

С php7.2 на php5.6:

sudo a2dismod php7.2 ; sudo a2enmod php5.6 ; sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php5.6

при запуске sudo a2dismod php7.2 ; sudo a2enmod php5.6 ; sudo service apache2 restart в терминале я получаю эту ошибку:

Модуль php7.2 уже отключен Рассмотрение зависимости mpm_prefork для php5.6: Рассмотрение конфликта mpm_event для mpm_prefork: Рассмотрение конфликта mpm_worker для mpm_prefork: Модуль mpm_prefork уже включен Рассмотрение конфликта php5 для php5.6: Модуль php5.6 уже включен Не удалось выполнить задание для apache2.service потому что процесс управления завершился с кодом ошибки. Подробности смотрите в "systemctl status apache2.service" и "journalctl -xe".

вот что я получаю от systemctl status apache2.service:

● apache2.service - The Apache HTTP Server    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf    Active: failed (Result: exit-code) since Mon 2018-03-26 10:56:51 IDT; 38min ago   Process: 18615 ExecStop=/usr/sbin/apachectl stop (code=exited, status=139)   Process: 18891 ExecStart=/usr/sbin/apachectl start (code=exited, status=139)  Main PID: 18540 (code=exited, status=0/SUCCESS)

Mar 26 10:56:51 Company systemd[1]: Starting The Apache HTTP Server...
Mar 26 10:56:51 Company apachectl[18891]: Segmentation fault (core dumped)
Mar 26 10:56:51 Company apachectl[18891]: Action 'start' failed.
Mar 26 10:56:51 Company apachectl[18891]: The Apache error log may have more information.
Mar 26 10:56:51 Company systemd[1]: apache2.service: Control process exited, code=exited status=139
Mar 26 10:56:51 Company systemd[1]: Failed to start The Apache HTTP Server.
Mar 26 10:56:51 Company systemd[1]: apache2.service: Unit entered failed state.
Mar 26 10:56:51 Company systemd[1]: apache2.service: Failed with result 'exit-code'.

а это от systemctl status apache2.service:

-- 
-- The start-up result is done.
Mar 26 11:33:45 Company nm-dispatcher[20168]: req:1 'dhcp4-change' [wlp3s0]: new request (1 scripts)
Mar 26 11:33:45 Company nm-dispatcher[20168]: req:1 'dhcp4-change' [wlp3s0]: start running ordered s
Mar 26 11:33:45 Company kernel: userif-4: sent link down event.
Mar 26 11:33:45 Company kernel: userif-4: sent link up event.
Mar 26 11:33:52 Company vmnet-dhcpd[2740]: DHCPREQUEST for 192.168.90.128 from 00:0c:29:71:c5:c9 via
Mar 26 11:33:52 Company vmnet-dhcpd[2740]: DHCPACK on 192.168.90.128 to 00:0c:29:71:c5:c9 via vmnet8
Mar 26 11:34:01 Company CRON[20179]: pam_unix(cron:session): session opened for user username by (uid=0
Mar 26 11:34:01 Company CRON[20180]: (username) CMD (/home/username/collectit/bin/collectit.sh >>/tmp/coll
Mar 26 11:34:01 Company CRON[20179]: (CRON) info (No MTA installed, discarding output)
Mar 26 11:34:01 Company CRON[20179]: pam_unix(cron:session): session closed for user username
Mar 26 11:35:01 Company CRON[20202]: pam_unix(cron:session): session opened for user username by (uid=0
Mar 26 11:35:01 Company CRON[20203]: (username) CMD (/home/username/collectit/bin/collectit.sh >>/tmp/coll
Mar 26 11:35:01 Company CRON[20202]: (CRON) info (No MTA installed, discarding output)
Mar 26 11:35:01 Company CRON[20202]: pam_unix(cron:session): session closed for user username
Mar 26 11:36:01 Company CRON[20235]: pam_unix(cron:session): session opened for user username by (uid=0
Mar 26 11:36:01 Company CRON[20236]: (username) CMD (/home/username/collectit/bin/collectit.sh >>/tmp/coll
Mar 26 11:36:01 Company CRON[20235]: (CRON) info (No MTA installed, discarding output)
Mar 26 11:36:01 Company CRON[20235]: pam_unix(cron:session): session closed for user username

Я проверил точный процесс с чистой новой ОС (виртуальная машина) и получил ту же самую ошибку, кстати.


person W.Doch    schedule 26.03.2018    source источник
comment
На /var/log/apache2/error.log что-нибудь написано?   -  person Nico Haase    schedule 26.03.2018
comment
Я нашел этот вопрос похожим на ваш. stackoverflow.com/ вопросов/42619312/, а также проверьте эту ссылку на наличие ошибки apache askubuntu.com/questions/629995/apache-not-able-to-restart   -  person Ravi    schedule 26.03.2018
comment
Если все, что вы делаете, это меняете то, что использует apache2, вам не нужно беспокоиться о sudo update-alternatives. Я без проблем переключаюсь между 7.0, 7.1 и 7.2, используя этот ppa и sudo a2dismod php7.? sudo a2enmod php7.?. Поэтому мне интересно, включен ли у вас мод или конфигурация, несовместимая с php5.6.   -  person Justin    schedule 26.03.2018
comment
@RaviHirani Я пробовал все методы, указанные в этих сообщениях, кроме одного, включающего переустановку apache2, что для меня будет полным беспорядком.   -  person W.Doch    schedule 26.03.2018
comment
@Justin Я пробовал update-alternatives, выглядит красиво, но не работает   -  person W.Doch    schedule 26.03.2018
comment
Верно. update-alternatives не имеет отношения к вашей проблеме. Вот что я пытался сказать.   -  person Justin    schedule 26.03.2018
comment
Если он работает с php7, а не с php5, возможно, что-то не совместимо, вам не кажется? Попробуйте отключить моды и конфиги. Что-то может зависеть от php7.   -  person Justin    schedule 26.03.2018
comment
@Justin сравнил все моды, и единственная разница между ними sodium на php7.2, которой у меня нет на php5.6   -  person W.Doch    schedule 26.03.2018
comment
Ошибка возникает при перезапуске сервера apache2. Я думаю, что это больше оттуда, чем из php7.2, какой файл журнала apache2 должен меня заинтересовать? Я прошел через несколько и не нашел ничего полезного @Justin   -  person W.Doch    schedule 26.03.2018
comment
О, и не уверен, достаточно ли упомянуто.. php5.6 работает в CLI, проблема в командной строке apache2   -  person W.Doch    schedule 26.03.2018
comment
Это проблема apache2. Не проблема пхп. Такие вещи, как phpMyAdmin, используют php и могут дать сбой, если что-то не поддерживается. Как упоминалось ранее, журнал ошибок apache2 должен регистрировать заметки о запуске /var/log/apache2/error.log   -  person Justin    schedule 26.03.2018
comment
Я удалил и переустановил libapache2-mod-php5.6 и получил это сообщение в конце установки: libapache2-mod-php5.6: php7.1 module already enabled, not enabling PHP 5.6 Как включить libapache2-mod-php5.6 вместо libapache2-mod-php7.1?   -  person W.Doch    schedule 26.03.2018
comment
Обновление: я проверил точный процесс с чистой ОС (виртуальная машина) и получил ту же самую ошибку, кстати.   -  person W.Doch    schedule 26.03.2018
comment
@ Джастин, нет phpmyadmin на виртуальной машине .. жестко не работает. Я tail -f-редал /var/log/apache2/error.log и при попытке перезапустить сервер или обновить страницу - нет обновления в файле error.log   -  person W.Doch    schedule 26.03.2018
comment
Вы можете попробовать apachectl configtest, чтобы убедиться, что нет ошибки файла конфигурации. libapache2-mod-php5.6 — это просто длинное имя для mod php5.6. Чтобы отключить php7.1, используйте a2dismod php7.1. Вы писали об этом на сайте стека Ubuntu?   -  person Justin    schedule 26.03.2018
comment
Ой. поэтому я переключаюсь между ними с правильным синтаксисом. Да, я тоже там выкладывал. без комментариев.   -  person W.Doch    schedule 26.03.2018
comment
решил это! sudo a2dismod php7.2 && sudo a2dismod php7.1 && sudo a2dismod php7.0, а потом sudo a2enmod php5.6 и все заработало, возможно, один из них был включен... Хотя это не имеет смысла, потому что sudo a2enmod php7.2 работало нормально.   -  person W.Doch    schedule 26.03.2018


Ответы (1)


Вы можете определить разные пути службы FastCgi для каждого виртуального хоста.

<VirtualHost *:80> DocumentRoot /var/www <FilesMatch \.php$> SetHandler "proxy:unix:path/to/php-fpm-version.sock|fcgi://localhost" </FilesMatch> </VirtualHost>

person Tigran Azatyan    schedule 26.03.2018
comment
Это должно работать и с обычными модулями Apache. Нет необходимости в FastCGI - person Nico Haase; 26.03.2018