@hakre Согласен, использование FPM снизит вероятность того, что несколько версий будут влиять друг на друга при загрузке в качестве модуля Apache :)
Ja Mayck
@Jack: Ага, а не модуль Apache, FCGI;)
hakre
До сих пор я пробовал phpbrew и php-версию, но они оба, похоже, не компилируют PHP.
хорошая задница
Ответы:
17
Один из способов сделать это - настроить вашу основную версию php с помощью mod_php и запустить все остальные через быстрый cgi на разных портах (например, 81, 82, 83 и т. Д.). Однако это не гарантирует полностью последовательного поведения.
Идея: для PHP 5.2.1 используйте порт 10521. Для 5.0.0 используйте 10500 :)
Уэйн,
2
Другой вариант - запустить его с помощью CGI (или FastCGI) по разным путям - например, / cgi500 /, / cgi528 /, ...
Gray Panther
Если вы работаете в Debian и хотите использовать упаковку, я рекомендую использовать debootstrap для создания chroot-системы, в которой хранится ваша версия PHP, а затем настроить Apache внутри chroot-системы.
Макс Цепков
23
С CentOS вы можете сделать это, используя комбинацию fastcgi для одной версии PHP и php-fpm для другой, как описано здесь:
3. Скомпилируйте и установите php 5.2 и 5.3 из исходников.
Для php 5.2 и 5.3 мы можем найти множество пакетов rpm в Интернете. Однако все они конфликтуют с php, который поставляется с CentOS, поэтому нам лучше собрать и установить их из исходного кода, это несложно, суть в том, чтобы установить php в другом месте.
Однако при установке php как модуля apache мы можем использовать только одну версию php одновременно. Если нам нужно запустить другую версию php на одном сервере, например, в одно и то же время другому виртуальному хосту может потребоваться другая версия php. К счастью, в этом могут помочь классные FastCGI и PHP-FPM.
Соберите и установите php-5.2 с включенным fastcgi
Отредактируйте /etc/php53/php-fpm.conf, измените некоторые настройки. Этот шаг в основном предназначен для того, чтобы раскомментировать некоторые настройки, вы можете изменить значение, если хотите.
Если все в порядке, вы можете использовать один из 3 виртуальных хостов в качестве шаблона для создания нового виртуального хоста с желаемой версией php.
Однако это только ссылка. Пожалуйста, включите соответствующие детали в ответ вместо того, чтобы полностью полагаться на другой сайт. У ссылок есть досадная проблема, заключающаяся в том, что они могут исчезнуть, и поэтому SO по-прежнему не содержит соответствующей информации.
Maarten Bodewes
Возможно, вы захотите заглянуть в CloudLinux. Это платное решение, но по приемлемой цене.
transilvlad
1
Правильный ответ! Вот такое же решение для Ubuntu: howtoforge.com/…
Тобиас Гертнер
10
Наличие нескольких экземпляров apache + php никогда меня не волновало, но, вероятно, это самый простой способ сделать это. Если вам не нравится KISS ... вот идея.
Запустите свой apache и попробуйте настроить его, как это делают debian и ubuntu, например, создайте каталоги для загруженных модулей. Ваш apache conf может использовать такие строки:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Затем создайте свою первую версию php и дайте ей префикс с явно указанным номером версии, например, /usr/local/php/5.2.8, /usr/local/php/5.2.6 ...
Чтобы переключить версии, все, что вам нужно сделать, это изменить файлы load и conf из каталога, который apache включает файлы для другой версии. Вы можете автоматизировать это с помощью простого сценария bash (удалите фактический файл, скопируйте файл альтернативных версий на место и перезапустите apache.
Одним из преимуществ этой настройки является то, что все согласовано, пока вы сохраняете php.ini одинаковым с точки зрения параметров и модулей (что вам все равно придется делать с CGI). Все они проходят через SAPI. Вашим приложениям не потребуется никаких изменений и использование относительных URL-адресов.
Я думаю, что это должно сработать, но опять же, я не пробовал и вряд ли буду это делать, потому что у меня нет таких же требований, как у вас. Прокомментируйте, если вы когда-нибудь попытаетесь.
Примечание: следующий метод будет работать с окнами.
Альтернативный метод (если можно запускать одну версию PHP за раз) - определить несколько служб Apache, каждая из которых будет использовать другую версию PHP.
Прежде всего используйте условия в файле конфигурации Apache:
Теперь вы можете запускать одну из вышеперечисленных служб за раз (необходимо выключить одну перед запуском другой).
Если вы ранее установили Apache как службу, вы можете удалить ее, используя команду ниже (замените имя службы тем, которое вы использовали):
apache -k uninstall -n Apache224
Еще одно замечание: я лично использую «программу значков области уведомлений» под названием «Seobiseu» для запуска и остановки служб по мере необходимости. Я добавил к нему две вышеуказанные услуги.
На самом деле это очень разумное решение. Если вы хотите запускать несколько служб параллельно, вы можете включить Listen 80и Listen 81в каждую ifdefine, соответственно.
caiosm1005 05
Хорошая идея, но вопрос касается сервера LAMP, а не сервера WAMP.
Винисиус Монтейро
4
Понимая, что вы, вероятно, говорите о локальном / настольном компьютере и, вероятно, хотели бы продолжить разговор о локальном / настольном компьютере, я предложу вам альтернативу на всякий случай, если это может помочь вам или кому-то еще:
Настройте несколько экземпляров виртуальных серверов в облаке и поделитесь своим кодом между ними в виде репозитория git (или меркуриального, я полагаю, хотя у меня нет личного опыта, все, что вам действительно нужно, это что-то децентрализованное). Это дает вам возможность максимально приблизиться к производственному опыту, и если у вас есть опыт настройки серверов, то это не так сложно (или дорого, если вы просто хотите развернуть сервер, делайте то, что вам нужно, затем снова поверните его вниз, тогда вы говорите о нескольких центах, скажем, 50 центов, или до нескольких долларов, если вы просто оставите его включенным).
В эти дни я занимаюсь разработкой всех своих проектов в облаке, и я обнаружил, что управлять инфраструктурой намного проще, чем когда-либо, когда я использовал локальные / невиртуализированные установки, и это делает этот вид параллельного сценария справедливо прямо вперед. Я просто хотел рассказать об этой идее, если вы ее не подумали.
Я только что успешно перешел с PHP5.3 на Ubuntu 10.
Для этого я использовал следующий скрипт:
#! /bin/sh
php_packages=`dpkg -l | grep php | awk '{print $2}'`
sudo apt-get remove $php_packages
sed s/lucid/karmic/g /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/karmic.list
sudo mkdir -p /etc/apt/preferences.d/
for package in $php_packages;
doecho"Package: $package
Pin: release a=karmic
Pin-Priority: 991
" | sudo tee -a /etc/apt/preferences.d/php
done
sudo apt-get update
sudo apt-get install $php_packages
Для тех, кто не знает, как запускать скрипты из командной строки, вот краткое руководство:
1. cd ~/
2. mkdir bin
3. sudo nano ~/bin/myscriptname.sh
4. paste in the script code I have posted above this
5. ctrl+x (this exits and prompts for you to save)
6. chmod u+x myscriptname.sh
Эти 6 шагов создают сценарий в папке с именем «bin» в вашем домашнем каталоге. Затем вы можете запустить этот сценарий, вызвав следующую команду:
хороший сценарий, хотя кармика у меня не сработала, потому что я был на Power PC. Я просто использовал сценарий, чтобы удалить мою текущую установку, а затем вручную собрал 2.14
Джейсон
2
Расмус Лердорф, создавший PHP, поддерживает активное решение Vagrant, которое, похоже, удовлетворяет ваши потребности. Он позволяет быстро переключаться между версиями PHP, в настоящее время поддерживая более 20 различных версий. Он поставляется с сервером nginx из коробки, но его можно легко переключить на apache2 с предварительно настроенными настройками. Он также поддерживает MySQL прямо из коробки.
Таким образом, у вас будет доступ ко всем версиям PHP, развертываемым на двух основных веб-серверах, в красивой бродячей коробке, поддерживаемой большим человеком, стоящим за PHP.
Это, наверное, ИМХО, «лучший» ответ - разные ВМ для каждой версии (но можно ли запускать несколько версий на одном IP-адресе?). Но как ни парадоксально, что создатель php должен это делать - величайшим недостатком php должно быть отсутствие совместимости между версиями, что делает Joomla, например, почти бесполезной.
EML
0
У меня на боксе запущено несколько проектов. Если вы уже установили более одной версии, этот сценарий bash должен помочь вам легко переключиться. На данный момент у меня есть php5, php5.6 и php7.0, которые я часто переключаю взад и вперед в зависимости от проекта, над которым я работаю. Вот мой код.
Не стесняйтесь копировать. Убедитесь, что вы понимаете, как работает код. Это для веб-хостинга. мой локальный ящик мои моды хранятся в / etc / apache2 / mods-enabled /
#!/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 variableVAR=$(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 exitif [ "$NEWVERSION" = "" ]; then
echo current version is ${array[0]}. To change version please useargumentexit 1
fiOLDVERSION=${array[0]}
#confirmtotheuserthisiswhattheywanttodoecho "Updatephp" ${OLDVERSION} to ${NEWVERSION}
#givetheusertheopportunitytouseCTRL-Ctoexitotjusthitreturnreadx
#calla2dismodfunction: thisdeactivatethecurrentphpversionsudoa2dismodphp${OLDVERSION}
#callthea2enmodversion. Thisenablesthenewmodesudoa2enmodphp${NEWVERSION}
echo "Restartservice??"
readx
#restartapachesudoserviceapache2restart
Для тестирования я просто запускаю несколько экземпляров httpd на разных IP-адресах, поэтому у меня php7 работает на 192.168.0.70, а php5.6 - на 192.168.0.56. В процессе производства у меня есть сайт, на котором запущена старая интернет-торговля с php5.3, и у меня просто другой файл conf для этого сайта.
Это также простой способ иметь разные php.iniфайлы для разных сайтов. Если у вас всего несколько сайтов, это хороший способ держать вещи в порядке, и вам не нужно беспокоиться о более чем 1 сайте за раз, когда вы что-то обновляете
Ответы:
Один из способов сделать это - настроить вашу основную версию php с помощью mod_php и запустить все остальные через быстрый cgi на разных портах (например, 81, 82, 83 и т. Д.). Однако это не гарантирует полностью последовательного поведения.
источник
С CentOS вы можете сделать это, используя комбинацию fastcgi для одной версии PHP и php-fpm для другой, как описано здесь:
https://web.archive.org/web/20130707085630/http://linuxplayer.org/2011/05/intall-multiple-version-of-php-on-one-server
На основе CentOS 5.6, только для Apache
1. Включите репозиторий rpmforge и epel yum
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm sudo rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm sudo rpm -ivh epel-release-5-4.noarch.rpm
2. Установите php-5.1
В серии CentOS / RHEL 5.x есть php-5.1 в коробке, просто установите его с помощью yum, например:
3. Скомпилируйте и установите php 5.2 и 5.3 из исходников.
Для php 5.2 и 5.3 мы можем найти множество пакетов rpm в Интернете. Однако все они конфликтуют с php, который поставляется с CentOS, поэтому нам лучше собрать и установить их из исходного кода, это несложно, суть в том, чтобы установить php в другом месте.
Однако при установке php как модуля apache мы можем использовать только одну версию php одновременно. Если нам нужно запустить другую версию php на одном сервере, например, в одно и то же время другому виртуальному хосту может потребоваться другая версия php. К счастью, в этом могут помочь классные FastCGI и PHP-FPM.
Соберите и установите php-5.2 с включенным fastcgi
1) Установите необходимые пакеты разработчика
2) Скомпилируйте и установите
wget http://cn.php.net/get/php-5.2.17.tar.bz2/from/this/mirror tar -xjf php-5.2.17.tar.bz2 cd php-5.2.17 ./configure --prefix=/usr/local/php52 \ --with-config-file-path=/etc/php52 \ --with-config-file-scan-dir=/etc/php52/php.d \ --with-libdir=lib64 \ --with-mysql \ --with-mysqli \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-mbstring \ --disable-debug \ --disable-rpath \ --with-bz2 \ --with-curl \ --with-gettext \ --with-iconv \ --with-openssl \ --with-gd \ --with-mcrypt \ --with-pcre-regex \ --with-zlib make -j4 > /dev/null sudo make install sudo mkdir /etc/php52 sudo cp php.ini-recommended /etc/php52/php.ini
3) создать сценарий оболочки fastcgi
создать файл /usr/local/php52/bin/fcgiwrapper.sh
#!/bin/bash PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS exec /usr/local/php52/bin/php-cgi chmod a+x /usr/local/php52/bin/fcgiwrapper.sh Build and install php-5.3 with fpm enabled wget http://cn.php.net/get/php-5.3.6.tar.bz2/from/this/mirror tar -xjf php-5.3.6.tar.bz2 cd php-5.3.6 ./configure --prefix=/usr/local/php53 \ --with-config-file-path=/etc/php53 \ --with-config-file-scan-dir=/etc/php53/php.d \ --enable-fpm \ --with-fpm-user=apache \ --with-fpm-group=apache \ --with-libdir=lib64 \ --with-mysql \ --with-mysqli \ --enable-mbstring \ --disable-debug \ --disable-rpath \ --with-bz2 \ --with-curl \ --with-gettext \ --with-iconv \ --with-openssl \ --with-gd \ --with-mcrypt \ --with-pcre-regex \ --with-zlib make -j4 && sudo make install sudo mkdir /etc/php53 sudo cp php.ini-production /etc/php53/php.ini sed -i -e 's#php_fpm_CONF=\${prefix}/etc/php-fpm.conf#php_fpm_CONF=/etc/php53/php-fpm.conf#' \ sapi/fpm/init.d.php-fpm sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm sudo chmod a+x /etc/init.d/php-fpm sudo /sbin/chkconfig --add php-fpm sudo /sbin/chkconfig php-fpm on sudo cp sapi/fpm/php-fpm.conf /etc/php53/
Настроить php-fpm
Отредактируйте /etc/php53/php-fpm.conf, измените некоторые настройки. Этот шаг в основном предназначен для того, чтобы раскомментировать некоторые настройки, вы можете изменить значение, если хотите.
pid = run/php-fpm.pid listen = 127.0.0.1:9000 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
Затем запустите fpm
Установить и настроить mod_fastcgi, mod_fcgid
sudo yum install libtool httpd-devel apr-devel wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz tar -xzf mod_fastcgi-current.tar.gz cd mod_fastcgi-2.4.6 cp Makefile.AP2 Makefile sudo make top_dir=/usr/lib64/httpd/ install sudo sh -c "echo 'LoadModule fastcgi_module modules/mod_fastcgi.so' > /etc/httpd/conf.d/mod_fastcgi.conf" yum install mod_fcgid
Настройка и тестирование виртуальных хостов
1) Добавьте следующую строку в / etc / hosts
127.0.0.1 web1.example.com web2.example.com web3.example.com
2) Создайте корень веб-документа и поместите под ним index.php, чтобы показать переключение phpinfo на корень пользователя, запустите
mkdir /var/www/fcgi-bin for i in {1..3}; do web_root=/var/www/web$i mkdir $web_root echo "<?php phpinfo(); ?>" > $web_root/index.php done
Примечание: пустой каталог / var / www / fcgi-bin обязателен, НЕ УДАЛЯЙТЕ ЕГО ПОЗЖЕ
3) Создайте файл конфигурации Apache (добавьте в httpd.conf)
NameVirtualHost *:80 # module settings # mod_fcgid <IfModule mod_fcgid.c> idletimeout 3600 processlifetime 7200 maxprocesscount 17 maxrequestsperprocess 16 ipcconnecttimeout 60 ipccommtimeout 90 </IfModule> # mod_fastcgi with php-fpm <IfModule mod_fastcgi.c> FastCgiExternalServer /var/www/fcgi-bin/php-fpm -host 127.0.0.1:9000 </IfModule> # virtual hosts... ################################################################# #1st virtual host, use mod_php, run php-5.1 ################################################################# <VirtualHost *:80> ServerName web1.example.com DocumentRoot "/var/www/web1" <ifmodule mod_php5.c> <FilesMatch \.php$> AddHandler php5-script .php </FilesMatch> </IfModule> <Directory "/var/www/web1"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost> ################################################################# #2nd virtual host, use mod_fcgid, run php-5.2 ################################################################# <VirtualHost *:80> ServerName web2.example.com DocumentRoot "/var/www/web2" <IfModule mod_fcgid.c> AddHandler fcgid-script .php FCGIWrapper /usr/local/php52/bin/fcgiwrapper.sh </IfModule> <Directory "/var/www/web2"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost> ################################################################# #3rd virtual host, use mod_fastcgi + php-fpm, run php-5.3 ################################################################# <VirtualHost *:80> ServerName web3.example.com DocumentRoot "/var/www/web3" <IfModule mod_fastcgi.c> ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/ AddHandler php5-fastcgi .php Action php5-fastcgi /fcgi-bin/php-fpm </IfModule> <Directory "/var/www/web3"> DirectoryIndex index.php index.html index.htm Options -Indexes FollowSymLinks +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost>
4) перезапустите apache. посетите 3 сайта, чтобы просмотреть phpinfo и проверить результат. то есть:
http://web1.example.com http://web2.example.com http://web3.example.com
Если все в порядке, вы можете использовать один из 3 виртуальных хостов в качестве шаблона для создания нового виртуального хоста с желаемой версией php.
источник
Наличие нескольких экземпляров apache + php никогда меня не волновало, но, вероятно, это самый простой способ сделать это. Если вам не нравится KISS ... вот идея.
Запустите свой apache и попробуйте настроить его, как это делают debian и ubuntu, например, создайте каталоги для загруженных модулей. Ваш apache conf может использовать такие строки:
Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf
Затем создайте свою первую версию php и дайте ей префикс с явно указанным номером версии, например, /usr/local/php/5.2.8, /usr/local/php/5.2.6 ...
Conf / load будет выглядеть примерно так:
php5.2.6.load
LoadModule php5_module /usr/local/php/5.2.6/libphp5.so
php5.2.8.load
LoadModule php5_module /usr/local/php/5.2.8/libphp5.so
Чтобы переключить версии, все, что вам нужно сделать, это изменить файлы load и conf из каталога, который apache включает файлы для другой версии. Вы можете автоматизировать это с помощью простого сценария bash (удалите фактический файл, скопируйте файл альтернативных версий на место и перезапустите apache.
Одним из преимуществ этой настройки является то, что все согласовано, пока вы сохраняете php.ini одинаковым с точки зрения параметров и модулей (что вам все равно придется делать с CGI). Все они проходят через SAPI. Вашим приложениям не потребуется никаких изменений и использование относительных URL-адресов.
Я думаю, что это должно сработать, но опять же, я не пробовал и вряд ли буду это делать, потому что у меня нет таких же требований, как у вас. Прокомментируйте, если вы когда-нибудь попытаетесь.
источник
Примечание: следующий метод будет работать с окнами.
Альтернативный метод (если можно запускать одну версию PHP за раз) - определить несколько служб Apache, каждая из которых будет использовать другую версию PHP.
Прежде всего используйте условия в файле конфигурации Apache:
<ifdefine php54> SetEnv PHPRC C:/apache/php54/ ScriptAlias /php/ "C:/apache/php54/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php-cgi.exe" </ifdefine> <ifdefine php55> SetEnv PHPRC C:/apache/php55/ ScriptAlias /php/ "C:/apache/php55/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php-cgi.exe" </ifdefine>
Теперь с помощью httpd.exe создайте две отдельные службы из командной строки (с повышенными правами администратора):
Теперь вы можете запускать одну из вышеперечисленных служб за раз (необходимо выключить одну перед запуском другой).
Если вы ранее установили Apache как службу, вы можете удалить ее, используя команду ниже (замените имя службы тем, которое вы использовали):
Еще одно замечание: я лично использую «программу значков области уведомлений» под названием «Seobiseu» для запуска и остановки служб по мере необходимости. Я добавил к нему две вышеуказанные услуги.
источник
Listen 80
иListen 81
в каждуюifdefine
, соответственно.Понимая, что вы, вероятно, говорите о локальном / настольном компьютере и, вероятно, хотели бы продолжить разговор о локальном / настольном компьютере, я предложу вам альтернативу на всякий случай, если это может помочь вам или кому-то еще:
Настройте несколько экземпляров виртуальных серверов в облаке и поделитесь своим кодом между ними в виде репозитория git (или меркуриального, я полагаю, хотя у меня нет личного опыта, все, что вам действительно нужно, это что-то децентрализованное). Это дает вам возможность максимально приблизиться к производственному опыту, и если у вас есть опыт настройки серверов, то это не так сложно (или дорого, если вы просто хотите развернуть сервер, делайте то, что вам нужно, затем снова поверните его вниз, тогда вы говорите о нескольких центах, скажем, 50 центов, или до нескольких долларов, если вы просто оставите его включенным).
В эти дни я занимаюсь разработкой всех своих проектов в облаке, и я обнаружил, что управлять инфраструктурой намного проще, чем когда-либо, когда я использовал локальные / невиртуализированные установки, и это делает этот вид параллельного сценария справедливо прямо вперед. Я просто хотел рассказать об этой идее, если вы ее не подумали.
источник
Я только что успешно перешел с PHP5.3 на Ubuntu 10.
Для этого я использовал следующий скрипт:
#! /bin/sh php_packages=`dpkg -l | grep php | awk '{print $2}'` sudo apt-get remove $php_packages sed s/lucid/karmic/g /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/karmic.list sudo mkdir -p /etc/apt/preferences.d/ for package in $php_packages; do echo "Package: $package Pin: release a=karmic Pin-Priority: 991 " | sudo tee -a /etc/apt/preferences.d/php done sudo apt-get update sudo apt-get install $php_packages
Для тех, кто не знает, как запускать скрипты из командной строки, вот краткое руководство:
1. cd ~/ 2. mkdir bin 3. sudo nano ~/bin/myscriptname.sh 4. paste in the script code I have posted above this 5. ctrl+x (this exits and prompts for you to save) 6. chmod u+x myscriptname.sh
Эти 6 шагов создают сценарий в папке с именем «bin» в вашем домашнем каталоге. Затем вы можете запустить этот сценарий, вызвав следующую команду:
Уля!
Надеюсь, это поможет некоторым из вас!
Для справки, вот где я взял скрипт: PHP5.2.10 для Ubuntu 10
Там есть несколько человек, которые подтверждают, что это работает, и мне это очень понравилось.
источник
Расмус Лердорф, создавший PHP, поддерживает активное решение Vagrant, которое, похоже, удовлетворяет ваши потребности. Он позволяет быстро переключаться между версиями PHP, в настоящее время поддерживая более 20 различных версий. Он поставляется с сервером nginx из коробки, но его можно легко переключить на apache2 с предварительно настроенными настройками. Он также поддерживает MySQL прямо из коробки.
Таким образом, у вас будет доступ ко всем версиям PHP, развертываемым на двух основных веб-серверах, в красивой бродячей коробке, поддерживаемой большим человеком, стоящим за PHP.
Для получения дополнительной информации я хотел бы обратиться к докладу г-на. Лердорф на https://youtu.be/6XnysJAyThs?t=2864
Репозиторий github, содержащий решение Vagrant, находится по адресу https://github.com/rlerdorf/php7dev.
источник
У меня на боксе запущено несколько проектов. Если вы уже установили более одной версии, этот сценарий bash должен помочь вам легко переключиться. На данный момент у меня есть php5, php5.6 и php7.0, которые я часто переключаю взад и вперед в зависимости от проекта, над которым я работаю. Вот мой код.
Не стесняйтесь копировать. Убедитесь, что вы понимаете, как работает код. Это для веб-хостинга. мой локальный ящик мои моды хранятся в / etc / apache2 / mods-enabled /
#!/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
источник
Для тестирования я просто запускаю несколько экземпляров httpd на разных IP-адресах, поэтому у меня php7 работает на 192.168.0.70, а php5.6 - на 192.168.0.56. В процессе производства у меня есть сайт, на котором запущена старая интернет-торговля с php5.3, и у меня просто другой файл conf для этого сайта.
Это также простой способ иметь разные
php.ini
файлы для разных сайтов. Если у вас всего несколько сайтов, это хороший способ держать вещи в порядке, и вам не нужно беспокоиться о более чем 1 сайте за раз, когда вы что-то обновляетеисточник