Sudo a2enmod php5.6, php -v все еще показывает конфликт php 7.01

Я пытаюсь переключить версии php, получить следующий ответ. Я попробовал демонтировать mpm_prefork и mpm_worker до сих пор без радости, любые идеи, пожалуйста.

на Ubuntu 16.04

sudo a2enmod php5.6

 Considering dependency mpm_prefork for php5.6:
 Considering conflict mpm_event for mpm_prefork:
 Considering conflict mpm_worker for mpm_prefork:
 Enabling module mpm_prefork.
 Considering conflict php5 for php5.6:
 Enabling module php5.6.
 To activate the new configuration, you need to run:
 service apache2 restart

Ответ 1

Ваши команды выглядят правильно. Вы перезапускали apache перед тестированием?

sudo service apache2 restart

Модуль PHP php5.6, созданный Ондржеем Сури, может быть включен только:

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

Я обнаружил, что эта настройка не совместима с другими модулями MPM, кроме PREFORK. Вы должны убедиться, что сначала отключили ВСЕ другие модули MPM, прежде чем включить мод php5.6.

Если мод не будет включен, возможно, вам придется попробовать отключить другие MPM.

sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event

Затем попробуйте включить мод снова, так как он должен автоматически включить правильный MPM.

$ sudo a2enmod php5.6
Considering dependency mpm_prefork for php5.6:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php5.6:
Enabling module php5.6.
To activate the new configuration, you need to run:
  service apache2 restart

К вашему сведению, мне нравится помещать эти команды в мои ".bash_aliases", поэтому они всегда под рукой для работы с DEV.

# Aliases - PHP
alias php.info='php -i'
alias php5.6='sudo a2dismod php7.0 && sudo a2dismod php7.1 && sudo a2dismod php7.2 && sudo a2dismod php7.3 && sudo a2enmod php5.6 && sudo update-alternatives --set php /usr/bin/php5.6 && sudo service apache2 restart'
alias php7.0='sudo a2dismod php5.6 && sudo a2dismod php7.1 && sudo a2dismod php7.2 && sudo a2dismod php7.3 && sudo a2enmod php7.0 && sudo update-alternatives --set php /usr/bin/php7.0 && sudo service apache2 restart'
alias php7.1='sudo a2dismod php5.6 && sudo a2dismod php7.0 && sudo a2dismod php7.2 && sudo a2dismod php7.3 && sudo a2enmod php7.1 && sudo update-alternatives --set php /usr/bin/php7.1 && sudo service apache2 restart'
alias php7.2='sudo a2dismod php5.6 && sudo a2dismod php7.0 && sudo a2dismod php7.1 && sudo a2dismod php7.3 && sudo a2enmod php7.2 && sudo update-alternatives --set php /usr/bin/php7.2 && sudo service apache2 restart'
alias php7.3='sudo a2dismod php5.6 && sudo a2dismod php7.0 && sudo a2dismod php7.1 && sudo a2dismod php7.2 && sudo a2enmod php7.3 && sudo update-alternatives --set php /usr/bin/php7.3 && sudo service apache2 restart'

ГИСТ: https://gist.github.com/djravine/376e81a018ba2b980750a5578deb3935

Ответ 2

php -v (версия PHP по умолчанию)

От PHP 7.0 до PHP 5.6:

sudo a2dismod php7.0

sudo a2enmod php5.6

sudo update-alternatives --set php /usr/bin/php5.6

sudo service apache2 restart

От PHP 5.6 до PHP 7.0:

sudo a2dismod php5.6

sudo a2enmod php7.0

sudo update-alternatives --set php /usr/bin/php7.0

sudo service apache2 restart

Ответ 3

Чтобы настроить php7 для работы с вашим сервером, вам необходимо выполнить некоторую настройку: 1. Удостоверьтесь, что вы удаляете любые следы php/php5 Откройте терминал и:

cd /etc/apache2/mods-enabled
ls -la

Вывод не должен содержать php5.conf или php5.load, но если это так, сделайте следующее:

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.con

Теперь добавьте php7.0.conf и php7.0.load:

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load

Вывод ls -la php * должен выглядеть следующим образом:

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load

После работы с модулями мы перейдем в каталог /etc/apache 2/conf. Удалите все следы php/php5 здесь также sudo rm

Затем, если необходимо, выполните:

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf

Вывод ls -la php * должен выглядеть следующим образом:

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0

И перезапустите apache.

Я только что решил, выполнив следующие шаги.

Ответ 4

a2enmod - это команда, относящаяся к apache2, а php -v - это команда, связанная с самой php.

когда вы выполняете следующую команду

sudo a2enmod php5.6

вы говорите с apache2, а не с php [hey apache, включите модуль php5 для меня вместо php7.0], так сказать.

, чтобы включить php5 на вашем сервере, вам необходимо: -

1) удалите текущую версию php, которая равна 7, а затем загрузите нужную версию php.

или

2) скачать php 5 по стороне php 7

Я думаю, что php-version станет отличной отправной точкой, чтобы сделать что-то подобное.