Установка нескольких версий php на одном сервер на примере Ubuntu и apache2. Для компиляции версий php буду использовать приложение phpfarm. Чтобы возникло меньше проблем в последующем установим необходимые пакеты
apt-get install gcc libxml2 libxml2-dev libssl-dev libsslcommon2-dev libcurl4-openssl-dev pkg-config libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libreadline-gplv2-dev make php5-cgi libmysqlclient15-dev libapache2-mod-fastcgi a2enmod fastcgi a2enmod actions
Первым делом поставим phpfarm (будем ставить в каталог /etc) перейдем в каталог
cd /etc
Скачаем
git clone https://github.com/fpoirotte/phpfarm.git phpfarm
Перейдем в директорию
cd phpfarm/src/
При необходимости правим options.sh Мой файл выглядит так:
#!/bin/bash # You can override config options very easily. # Just create a custom options file in the custom/ directory. # It may be version specific: # - custom/options.sh # - custom/options-5.sh # - custom/options-5.3.sh # - custom/options-5.3.1.sh # # Don't touch this file here - it would prevent you from just # "svn update"'ing your phpfarm source code. version=$1 vmajor=$2 vminor=$3 vpatch=$4 configoptions="\ --disable-short-tags \ --with-layout=GNU \ --enable-bcmath \ --enable-calendar \ --enable-exif \ --enable-ftp \ --enable-mbstring \ --enable-pcntl \ --enable-soap \ --enable-sockets \ --enable-wddx \ --enable-zip \ --with-zlib \ --with-pdo-mysql \ --with-mysql \ --with-mysqli \ --with-mcrypt \ --with-openssl \ --with-curl \ --with-gettext \ --with-gd \ --enable-gd-native-ttf \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-libxml-dir \ --with-xmlrpc \ --enable-sockets \ --enable-pcntl \ --with-readline \ " # --enable-sqlite-utf8 was removed starting with PHP 5.4.0. test $vmajor -eq 5 -a $vminor -lt 4 if [ $? -eq 0 ]; then configoptions="\ $configoptions \ --enable-sqlite-utf8 \ " fi echo $version $vmajor $vminor $vpatch configure=`stat -c '%Y' "options.sh"` for suffix in "" "-$vmajor" "-$vmajor.$vminor" "-$vmajor.$vminor.$vpatch" "-$version"; do custom="custom/options$suffix.sh" if [ -e "$custom" ]; then tstamp=`stat -c '%Y' "$custom"` if [ $tstamp -gt $configure ]; then configure=$tstamp fi source "$custom" "$version" "$vmajor" "$vminor" "$vpatch" fi done
Дадим права для выполнения сценария установки репозитария:
chmod +x /etc/phpfarm/src/compile.sh
Далее определимся с версией php и установим ее, мой пример 5.6.13
./compile.sh 5.6.13
Далее подготовим для apache2 конфигурационный файл для поднятия отдельного сайта определенной версии php Перейдем в /usr/lib/cgi-bin/
cd /usr/lib/cgi-bin/
Создаем файл php56-cgi
touch php56-cgi
Отредактируем
nano php56-cgi
Приводим к виду (у вас могут быть иные пути, внимательно смотрим):
#!/bin/sh PHPRC="/etc/phpfarm/inst/php-5.6.13/" export PHPRC PHP_FCGI_CHILDREN=4 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /etc/phpfarm/inst/php-5.6.13/bin/php-cgi
Задаем права на выполнение:
chmod +x /usr/lib/cgi-bin/php56-cgi
Идем в папку апач:
cd /etc/apache2
Создаем файл для подключения виртуального хоста и отредактируем его:
touch php56.conf nano php56.conf
Вот так выглядит содержимое:
SetHandler application/x-httpd-php5 ScriptAlias /php56-cgi /usr/lib/cgi-bin/php56-cgi Action application/x-httpd-php5 /php56-cgi AddHandler application/x-httpd-php5 .php
Далее подключаем конфигурационный файл к виртуальному хосту:
cd /etc/apache2/sites-enabled
Измените имя файла на имеющийся у вас виртуальный хост
nano default.conf
Нужно подключить файл конфигурации, делается это через Include , после первой строки с кодом:
Добавим:
Include php56.conf
Перезагружаем апач:
service apache2 restart
идем в директорию сайта, создаем файл phpinfo.php
Радуемся, если получилось. Пишем комментарии, что все хорошо получилось. Естественно не все все так гладко у всех может быть, могут возникнуть ошибки при компиляции, но это исправимо - пишите ошибки в комментариях, будем исправлять
Возможные ошибки: При ошибке: configure: error: freetype.h not found
mkdir /usr/include/freetype2/freetype ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
При ошибке: configure error cannot find mysql header files under
apt-get install libmysqlclient15-dev
- of 0
You cannot edit posts or make replies: You should be logged in before you can post.