Я хочу, чтобы на моем компьютере Ubuntu были установлены как PHP 5.2.17, так и PHP 5.3.5 и переключались в соответствии с моей необходимостью. Как я могу это достичь?
Вы можете запускать сразу две разные версии PHP, но это не так просто, как просто apt-получение. Вам нужно запустить одну отдельно установленную версию и выполнить ее в соответствии с настройками конфигурации apache.
Вы можете сделать это, используя fastcgi, например: в основном то, что вы ищете, - это конфигурация, которую вы видите на этой странице. Вы добавляете другой обработчик в свой конфиг в зависимости от ситуации / порта / домена, который вам нужен. Трюк после установки обеих версий - это:
=== с этой страницы ==
Последний шаг состоял в создании виртуальных хостов. В конце у меня есть три файла в / etc / apache2 / sites-enabled: 000-default, php5.3.17 и php5.4.7 Со следующим содержимымпо умолчанию:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
php5.3.17:
<VirtualHost *:80>
ServerName 5317.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
php5.4.7:
<VirtualHost *:80>
ServerName 547.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php547.fcgi
</Directory>
</VirtualHost>
См. полную установку на этой странице . Не забудьте также взглянуть на две ссылки в заголовке, они выглядят как хорошие учебники (но менее сжатые). Это и то
(не следует из-за того, что связанный вопрос большой, без принятого ответа. Метод должен (и работает) работать нормально, но пользователь забыл использовать <?php и использовал <? со шорттагами, см. комментарии)
Из этого поста я просто приводил в порядок команды и объяснял по порядку, как мне служили (Ubuntu 12.04)
Этот метод дает вам:
скрипт с меню, который (не оба одновременно) различные версии PHP, установленные на вашем сервере, разделяли файлы confУстановите все версии, которые вам нужны (у меня два)
Установите зависимости :
sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common
Сначала установите PHP 5.3. Загрузите php sources
md5sum Downloads/php-5.3.10.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.3.10.tar.bz2 .
tar xjf php-5.3.10.tar.bz2
cd php-5.3.10/
sudo mkdir /usr/local/php/php_5.3.10
Сначала установите PHP5.6. Загрузите php sources
md5sum Downloads/php-5.6.11.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.6.11.tar.bz2 .
tar xjf php-5.6.11.tar.bz2
cd php-5.6.11/
sudo mkdir /usr/local/php/php-5.6.11
версии менеджера скриптов PHP: создайте файл с именем php.sh и поместите его в /bin/:
#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
"1")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
"2")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
*)
echo "Opcion no valida"
;;
esac
Скомпилируйте и установите php 5.3: [ ! d15] cd ~/Sources/php-5.3.10/
sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/
ls -lhart /usr/local/php/php_5.3.10/modules/
sudo a2dismod php5
sudo service apache2 restart
Скомпилировать и установить php 5.6
cd ~/Sources/php-5.6.11
sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules
ls -lhart /usr/local/php/php_5.6.11/modules
sudo a2dismod php5
sudo service apache2 restart
Давайте их использовать:
$ sudo php.sh
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
Ingrese su eleccion: 1
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Это работает для меня: https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu
То же, что и скрипт из «Growling Flea ", но с использованием новых версий.
Добавить PPA Пакеты PHP 5.6 и PHP 7.0 относятся к сторонним PPA, которые не предоставляются официальными репозиториями Ubuntu от Canonical. PPA, которые я рекомендую здесь, это Ondřej Surý, который загружает PHP для Debian (который затем используется Ubuntu), поэтому, хотя это не официальный репозиторий, он не совсем случайный! Сам PPA здесь. Чтобы добавить PPA к вашей настройке:sudo add-apt-repository ppa:ondrej/php
Затем мы также захотим захватить информацию о том, что предлагается на этом новом PPA, а затем запустите: sudo apt-get update
Установите новые версии PHP. У меня уже было несколько из установленных пакетов php5, но я ничего не удалял, я просто хотел, чтобы apt разработал то, что он хотел сделать, когда я попросил его установить новые версии: sudo apt-get install php5.6 php7.0
. Это привело к большому количеству жалоб от apt и много конфликты. Первая предлагаемая резолюция заключалась в том, чтобы удалить все пакеты php5 для акций, чтобы PHP 5.6 мог быть установлен, поэтому я просто принял первое предложение. Я использую apache, поэтому эта настройка дала мне apache с доступными как php5.6, так и php7.0 модулями, и фактически загружен модуль php5.6. Как и сам PHP, все расширения и другие инструменты, которые вы ожидаете с PHP, существуют для обеих версий PHP, поэтому их очень легко добавить в нужные вам модули. Я был очень, очень впечатлен тем, как это хорошо сделано. Настройка и изменение версий Теперь у вас есть две совершенно разные версии PHP, установленные в вашей системе, поэтому давайте посмотрим, куда все куски пошли! Конфигурационные файлы все находятся в /etc/php/5.6 и /etc/php/7.0 соответственно - внутри здесь вы можете настроить, какие расширения загружены, установить параметры ini и все остальное для каждой версии в отдельности. Я пользователь apache, и, как я уже говорил, оба модуля доступны. Поэтому, чтобы переключиться с одного на другой, мне нужно сделать: sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
Для пользователей nginx изменения почти такие же простые, у Digital Ocean есть хорошая документация по этому поводу (у них есть отличные документы!), Поэтому ознакомьтесь с их руководством: https: //www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04, так как он включает раздел по переконфигурации nginx для использования другой версии PHP. Из командной строки у меня есть как php5.6, так и php7.0, доступные как команды. У меня также есть команда php - посмотрите в / etc / alternatives, чтобы увидеть, что она символически ссылается на определенную версию PHP cli *. Вы также можете быстро проверить, что вы используете, запустив php -v. & AST; более конкретно, запустите php, чтобы посмотреть, какая версия PHP используется, но это, вероятно, укажет на /usr/bin/php, который для меня сам является символической ссылкой на команду /etc/alternatives/php. Работа с расширениями. Этот PPA поставляется с обычным пакетом php-pear, который предлагает команду pecl для обеих версий PHP, поэтому любые расширения, доступные через PECL, могут быть установлены обычным способом. Вам также понадобятся соответствующие заголовки, чтобы установить php5.6-dev или php7.0-dev. Когда установка pecl завершится, вы получите примечание, чтобы добавить * .so-файл к вашему php.ini; на самом деле лучше всего здесь посмотреть, что находится в /etc/php/mods-available. Там уже будут некоторые модули, каждый из которых находится в собственном файле с именем после расширения и заканчивается на .ini. Вы можете скопировать его для использования в качестве шаблона или создать свой собственный и поместить в него всю необходимую конфигурацию для расширения (как минимум, вам нужно extension=[extensionName].so). После того, как новое расширение доступно в доступных моделях, включите и затем проверьте его, выполнив: sudo phpenmod extension
php -m
. Это создаст символические ссылки в правильных местах для вашей текущей версии PHP для загрузки этого модуля, и вы должны увидеть его в списке модулей выводится на php -m. Pro tip: если вы не видите его на выходе, прокрутите весь путь до вершины вывода и посмотрите, есть ли там полезные сообщения об ошибках. Вы также можете запускать каждый сайт с разными пользователями. Более безопасный.
Я использовал этот подход один раз.
http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php- version-on-apache /
Теперь я думаю, что лучше использовать php-fpm ... но это более сложно настроить несколько версий php.
запускать множественные php-fpms и устанавливать apache для использования друг друга.
Я установил php 5.6 и 7.0, но, помимо всех советов, он продолжал работать на 5.6, поэтому эта команда сохраняет день (в моем случае i chosse option 1 и restart apache):
sudo update-alternatives --config php
Если вы хотите запустить их одновременно, вам понадобятся два разных порта. Возможно, вы можете просто изменить конфигурацию apache (httpd.conf) с помощью простого скрипта, который перемещает ту или иную версию в правильную позицию перед запуском apache.
Я написал сценарий bash, который позволяет мне легко переключаться между установленными версиями php на моем ящике. Я запускаю несколько виртуальных хостов, потому что у меня есть несколько веб-проектов с клиентами, у которых есть старые и новые программы. Некоторые из этих проектов требуют, чтобы более старые версии php и другие проекты требовали php7.0.
Прочитайте мои комментарии и убедитесь, что вы понимаете, что происходит, прежде чем использовать это.
#!/bin/bash
# This file is for switching php versions.
# To run this file you must use bash, not sh
#
# OS: Ubuntu 14.04 but should work on any linux
# Example: bash phpswitch.sh 7.0
# Written by Daniel Pflieger
# growlingflea at g mail dot com
NEWVERSION=$1 #this is the git directory target
#get the active php enabled mod by getting the array of files and store
#it to a variable
VAR=$(ls /etc/apache2/mods-enabled/php*)
#parse the returned variables and get the version of php that is active.
IFS=' ' read -r -a array <<< "$VAR"
array[0]=${array[0]#*php}
array[0]=${array[0]%.conf}
#confirm that the newversion veriable isn't empty.. if it is tell user
#current version and exit
if [ "$NEWVERSION" = "" ]; then
echo current version is ${array[0]}. To change version please use argument
exit 1
fi
OLDVERSION=${array[0]}
#confirm to the user this is what they want to do
echo "Update php" ${OLDVERSION} to ${NEWVERSION}
#give the user the opportunity to use CTRL-C to exit ot just hit return
read x
#call a2dismod function: this deactivate the current php version
sudo a2dismod php${OLDVERSION}
#call the a2enmod version. This enables the new mode
sudo a2enmod php${NEWVERSION}
echo "Restart service??"
read x
#restart apache
sudo service apache2 restart
Вместо того, чтобы делать несколько VirtualHost, я просто добавляю приведенный ниже код в свой файл .htaccess и, на удивление, он работал,
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
Узел: я уже установил php7.2-fpm перед использованием кода .
У меня была такая же проблема, когда я работал с несколькими проектами. Я ссылался на эту статью. Но это было похоже на каждый раз, когда мне нужно переключать версии, если это необходимо, но это дает гибкость для cli и web отдельно.
Перемещение с php5.6 на php7.0
Для Apache мы можем использовать команду как:
sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
Для CLI мы можем использовать команду как:
sudo update-alternatives --set php /usr/bin/php7.0
Перемещение с php5.6 to php7.0
Для Apache мы можем использовать команду как:
sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
Для CLI мы можем использовать команду как:
sudo update-alternatives --set php /usr/bin/php5.6
Вы можете запускать сразу две разные версии PHP, но это не так просто, как просто apt-получение. Вам нужно запустить одну отдельно установленную версию и выполнить ее в соответствии с настройками конфигурации apache.
Вы можете сделать это, используя fastcgi, например: в основном то, что вы ищете, - это конфигурация, которую вы видите на этой странице. Вы добавляете другой обработчик в свой конфиг в зависимости от ситуации / порта / домена, который вам нужен. Трюк после установки обеих версий - это:
=== с этой страницы ==
Последний шаг состоял в создании виртуальных хостов. В конце у меня есть три файла в / etc / apache2 / sites-enabled: 000-default, php5.3.17 и php5.4.7 Со следующим содержимымпо умолчанию:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
php5.3.17:
<VirtualHost *:80>
ServerName 5317.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php5317.fcgi
</Directory>
</VirtualHost>
php5.4.7:
<VirtualHost *:80>
ServerName 547.localhost
DocumentRoot /var/www
<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AddHandler php-cgi .php
Action php-cgi /php-fcgi/php547.fcgi
</Directory>
</VirtualHost>
См. полную установку на этой странице . Не забудьте также взглянуть на две ссылки в заголовке, они выглядят как хорошие учебники (но менее сжатые). Это и то
(не следует из-за того, что связанный вопрос большой, без принятого ответа. Метод должен (и работает) работать нормально, но пользователь забыл использовать <?php и использовал <? со шорттагами, см. комментарии)
Из этого поста я просто приводил в порядок команды и объяснял по порядку, как мне служили (Ubuntu 12.04)
Этот метод дает вам:
скрипт с меню, который (не оба одновременно) различные версии PHP, установленные на вашем сервере, разделяли файлы confУстановите все версии, которые вам нужны (у меня два)
Установите зависимости :
sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common
Сначала установите PHP 5.3. Загрузите php sources
md5sum Downloads/php-5.3.10.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.3.10.tar.bz2 .
tar xjf php-5.3.10.tar.bz2
cd php-5.3.10/
sudo mkdir /usr/local/php/php_5.3.10
Сначала установите PHP5.6. Загрузите php sources
md5sum Downloads/php-5.6.11.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.6.11.tar.bz2 .
tar xjf php-5.6.11.tar.bz2
cd php-5.6.11/
sudo mkdir /usr/local/php/php-5.6.11
версии менеджера скриптов PHP: создайте файл с именем php.sh и поместите его в /bin/:
#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
"1")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
"2")
rm /etc/apache2/php.conf
ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf
/etc/init.d/apache2 restart
;;
*)
echo "Opcion no valida"
;;
esac
Скомпилируйте и установите php 5.3: [ ! d15] cd ~/Sources/php-5.3.10/
sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/
ls -lhart /usr/local/php/php_5.3.10/modules/
sudo a2dismod php5
sudo service apache2 restart
Скомпилировать и установить php 5.6
cd ~/Sources/php-5.6.11
sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules
ls -lhart /usr/local/php/php_5.6.11/modules
sudo a2dismod php5
sudo service apache2 restart
Давайте их использовать:
$ sudo php.sh
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
Ingrese su eleccion: 1
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Это работает для меня: https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu
То же, что и скрипт из «Growling Flea ", но с использованием новых версий.
Добавить PPA Пакеты PHP 5.6 и PHP 7.0 относятся к сторонним PPA, которые не предоставляются официальными репозиториями Ubuntu от Canonical. PPA, которые я рекомендую здесь, это Ondřej Surý, который загружает PHP для Debian (который затем используется Ubuntu), поэтому, хотя это не официальный репозиторий, он не совсем случайный! Сам PPA здесь. Чтобы добавить PPA к вашей настройке:sudo add-apt-repository ppa:ondrej/php
Затем мы также захотим захватить информацию о том, что предлагается на этом новом PPA, а затем запустите: sudo apt-get update
Установите новые версии PHP. У меня уже было несколько из установленных пакетов php5, но я ничего не удалял, я просто хотел, чтобы apt разработал то, что он хотел сделать, когда я попросил его установить новые версии: sudo apt-get install php5.6 php7.0
. Это привело к большому количеству жалоб от apt и много конфликты. Первая предлагаемая резолюция заключалась в том, чтобы удалить все пакеты php5 для акций, чтобы PHP 5.6 мог быть установлен, поэтому я просто принял первое предложение. Я использую apache, поэтому эта настройка дала мне apache с доступными как php5.6, так и php7.0 модулями, и фактически загружен модуль php5.6. Как и сам PHP, все расширения и другие инструменты, которые вы ожидаете с PHP, существуют для обеих версий PHP, поэтому их очень легко добавить в нужные вам модули. Я был очень, очень впечатлен тем, как это хорошо сделано. Настройка и изменение версий Теперь у вас есть две совершенно разные версии PHP, установленные в вашей системе, поэтому давайте посмотрим, куда все куски пошли! Конфигурационные файлы все находятся в /etc/php/5.6 и /etc/php/7.0 соответственно - внутри здесь вы можете настроить, какие расширения загружены, установить параметры ini и все остальное для каждой версии в отдельности. Я пользователь apache, и, как я уже говорил, оба модуля доступны. Поэтому, чтобы переключиться с одного на другой, мне нужно сделать: sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
Для пользователей nginx изменения почти такие же простые, у Digital Ocean есть хорошая документация по этому поводу (у них есть отличные документы!), Поэтому ознакомьтесь с их руководством: https: //www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04, так как он включает раздел по переконфигурации nginx для использования другой версии PHP. Из командной строки у меня есть как php5.6, так и php7.0, доступные как команды. У меня также есть команда php - посмотрите в / etc / alternatives, чтобы увидеть, что она символически ссылается на определенную версию PHP cli *. Вы также можете быстро проверить, что вы используете, запустив php -v. & AST; более конкретно, запустите php, чтобы посмотреть, какая версия PHP используется, но это, вероятно, укажет на /usr/bin/php, который для меня сам является символической ссылкой на команду /etc/alternatives/php. Работа с расширениями. Этот PPA поставляется с обычным пакетом php-pear, который предлагает команду pecl для обеих версий PHP, поэтому любые расширения, доступные через PECL, могут быть установлены обычным способом. Вам также понадобятся соответствующие заголовки, чтобы установить php5.6-dev или php7.0-dev. Когда установка pecl завершится, вы получите примечание, чтобы добавить * .so-файл к вашему php.ini; на самом деле лучше всего здесь посмотреть, что находится в /etc/php/mods-available. Там уже будут некоторые модули, каждый из которых находится в собственном файле с именем после расширения и заканчивается на .ini. Вы можете скопировать его для использования в качестве шаблона или создать свой собственный и поместить в него всю необходимую конфигурацию для расширения (как минимум, вам нужно extension=[extensionName].so). После того, как новое расширение доступно в доступных моделях, включите и затем проверьте его, выполнив: sudo phpenmod extension
php -m
. Это создаст символические ссылки в правильных местах для вашей текущей версии PHP для загрузки этого модуля, и вы должны увидеть его в списке модулей выводится на php -m. Pro tip: если вы не видите его на выходе, прокрутите весь путь до вершины вывода и посмотрите, есть ли там полезные сообщения об ошибках. Вы также можете запускать каждый сайт с разными пользователями. Более безопасный.
Я использовал этот подход один раз.
http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php- version-on-apache /
Теперь я думаю, что лучше использовать php-fpm ... но это более сложно настроить несколько версий php.
запускать множественные php-fpms и устанавливать apache для использования друг друга.
Я установил php 5.6 и 7.0, но, помимо всех советов, он продолжал работать на 5.6, поэтому эта команда сохраняет день (в моем случае i chosse option 1 и restart apache):
sudo update-alternatives --config php
Если вы хотите запустить их одновременно, вам понадобятся два разных порта. Возможно, вы можете просто изменить конфигурацию apache (httpd.conf) с помощью простого скрипта, который перемещает ту или иную версию в правильную позицию перед запуском apache.
Я написал сценарий bash, который позволяет мне легко переключаться между установленными версиями php на моем ящике. Я запускаю несколько виртуальных хостов, потому что у меня есть несколько веб-проектов с клиентами, у которых есть старые и новые программы. Некоторые из этих проектов требуют, чтобы более старые версии php и другие проекты требовали php7.0.
Прочитайте мои комментарии и убедитесь, что вы понимаете, что происходит, прежде чем использовать это.
#!/bin/bash
# This file is for switching php versions.
# To run this file you must use bash, not sh
#
# OS: Ubuntu 14.04 but should work on any linux
# Example: bash phpswitch.sh 7.0
# Written by Daniel Pflieger
# growlingflea at g mail dot com
NEWVERSION=$1 #this is the git directory target
#get the active php enabled mod by getting the array of files and store
#it to a variable
VAR=$(ls /etc/apache2/mods-enabled/php*)
#parse the returned variables and get the version of php that is active.
IFS=' ' read -r -a array <<< "$VAR"
array[0]=${array[0]#*php}
array[0]=${array[0]%.conf}
#confirm that the newversion veriable isn't empty.. if it is tell user
#current version and exit
if [ "$NEWVERSION" = "" ]; then
echo current version is ${array[0]}. To change version please use argument
exit 1
fi
OLDVERSION=${array[0]}
#confirm to the user this is what they want to do
echo "Update php" ${OLDVERSION} to ${NEWVERSION}
#give the user the opportunity to use CTRL-C to exit ot just hit return
read x
#call a2dismod function: this deactivate the current php version
sudo a2dismod php${OLDVERSION}
#call the a2enmod version. This enables the new mode
sudo a2enmod php${NEWVERSION}
echo "Restart service??"
read x
#restart apache
sudo service apache2 restart
Вместо того, чтобы делать несколько VirtualHost, я просто добавляю приведенный ниже код в свой файл .htaccess и, на удивление, он работал,
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
Узел: я уже установил php7.2-fpm перед использованием кода .
У меня была такая же проблема, когда я работал с несколькими проектами. Я ссылался на эту статью. Но это было похоже на каждый раз, когда мне нужно переключать версии, если это необходимо, но это дает гибкость для cli и web отдельно.
Перемещение с php5.6 на php7.0
Для Apache мы можем использовать команду как:
sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
Для CLI мы можем использовать команду как:
sudo update-alternatives --set php /usr/bin/php7.0
Перемещение с php5.6 to php7.0
Для Apache мы можем использовать команду как:
sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
Для CLI мы можем использовать команду как:
sudo update-alternatives --set php /usr/bin/php5.6