несколько PHP на Apache Centos

Как я могу получить несколько версий php, работающих на Centos 6.5 одновременно?

Вот как.

Требования
Centos 6.5 (Возможны работы с 6.6 и 7)
Apache Apache / 2.2.15 (возможна работа с другими версиями)

Это руководство устанавливает и использует
FASTCGI (см. Комментарии для альтернативной установки)
PHPFARM

Эта установка была сделана таким образом, чтобы она была совместима с iredmail.
Вы можете установить iredmail на сервер с этой настройкой.

Шаг 1
Установка PHPFarm

yum install gcc libxml2-devel openssl-devel bzip2-devel curl-devel libjpeg-devel     freetype-devel icu libicu-devel gcc-c++ postgresql-devel aspell-devel git -y

$ cd /opt/
$ git clone https://github.com/cweiske/phpfarm.git phpfarm
$ cd phpfarm/src/
$ cd /opt/phpfarm/src/

Для каждой версии PHP вы хотите запустить это. Однако, если вы хотите, чтобы пользовательские модули, такие как поддержка mysql, пропустите это и посмотрите часть ниже.

$ ./compile.sh 5.3.1
$ ./compile.sh 5.3.3
$ ./compile.sh 5.5.11

Если вы получаете ошибки компиляции, перезагрузите компьютер и попробуйте снова. / Compile.sh 5.3.1 Это сработало для меня, когда я столкнулся с этой проблемой

MYSQL и поддержка модулей
Шаги для получения поддержки MySQL (и других модулей) для пользовательской установки phpfarm php версии 5.5.14. Эти инструкции работают для любой версии, просто переименуйте 5.5.14 в 5.4.3. Вам, конечно, понадобится сервер mysql для подключения, чтобы использовать модуль mysql в php.
Эти шаги должны быть выполнены в этом порядке
Шаг 1А
Убедитесь, что у вас есть эти пути и дата правильна, я сделал это как root. У вас должна быть дата. Часовой пояс, который вы собираетесь использовать.

cd /opt/phpfarm/src
vi custom-php.ini

date.timezone=America/Halifax
include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"

Шаг 1Б
Убедитесь, что у вас есть эти пути, а дата и время указаны правильно

cd /opt/phpfarm/src
vi default-custom-php.ini

date.timezone=America/Halifax
include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"

Шаг 1С
Обратите особое внимание на эту линию

--with-config-file-path=/opt/phpfarm/inst/php-5.5.11/lib/ \

он должен быть настроен для версии, с которой вы работаете. Как корень

vi custom-options-5.5.14.sh

#!/bin/bash

#gcov='--enable-gcov'
configoptions="
--disable-debug \
--with-config-file-path=/opt/phpfarm/inst/php-5.5.11/lib/ \
--enable-short-tags \
--with-pear \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-wddx \
--enable-zip \
--with-zlib \
--with-gettext \
--enable-pdo \
--with-pdo-mysql \
--enable-cgi \
--enable-json \
--with-curl \
--with-openssl \
--enable-openssl \
--with-mysql \
--enable-mysql \
$gcov"

Шаг 1D
Теперь скомпилируйте как root. Phpfarm будет автоматически искать файл с именем custom-options-5.5.14.sh при компиляции 5.5.14 или любую другую версию, конечно же, с соответствующими номерами версий.

./compile.sh 5.5.14

Позже, когда вы проверяете свою веб-страницу с помощью phpinfo (); функция, вы увидите поддержку этих модулей и другой текст "Configure Command" на странице.

Если эти шаги не завершены по порядку, возможно, вам придется сделать это снова. Чтобы сделать это снова, сначала удалите файлы из папки src и папки inst.

rm -rf /opt/phpfarm/inst/php-5.5.14

rm -rf /opt/phpfarm/src/php-5.5.14

Команда rm удалит папку, а -rf означает r рекурсивный и f force. Ref:http://linuxcommand.org/lc3_man_pages/rm1.html

Если у вас есть ошибки, проверьте с этим сайтом. Есть и другие, но я нашел это полезным.

http://crybit.com/20-common-php-compilation-errors-and-fix-unix/

Справочник по поддержке mysql и модуля

Проблема активации расширения php с помощью PHP Farm

Ошибки компиляции PHP
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/

Шаг 2
Добавление phpfarm в ваши профили

добавьте это в конец .bashrc для пользователя root и не-root. Файл .bashrc можно найти в корневой папке пользователя или в cd ~ / затем ls -all, и вы должны его увидеть.

PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

также выполните это в терминале после того, как вы добавили его в файлы .bashrc для пользователя root и не-root

export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

Теперь выйдите из терминала и снова войдите в систему. Попробуйте эту команду

switch-phpfarm 5.5.11

Вы должны иметь возможность переключаться между версиями diff php

[root@test joe]# switch-phpfarm 5.5.11
Setting active PHP version to 5.5.11
PHP 5.5.11 (cli) (built: May 17 2014 22:01:31) (DEBUG)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
[root@test joe]#

добавьте репозиторий для CentOS / RHEL 6, 64-битный (x86_64):

cd /tmp
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Шаг 3
установить вкуснятины

yum install php php-cli mod_fastcgi

НОТА на этом этапе, если вы попытаетесь запустить switch-phpfarm 5.5.11, он не будет работать должным образом, но это нормально. мы по-прежнему сможем запустить несколько сайтов с разными версиями php

Шаг 4
Убедитесь, что ваш cgi-bin создан и файлы настроены

$ cd  /var/www

Если cgi-bin еще нет, создайте его

$ mkdir cgi-bin

Для каждой версии php вы собираетесь использовать make один из этих файлов. Заменить окончание на номер версии

vi /var/www/cgi-bin/php.fastcgi.5.5.11

шаг 5
Внутри файла php.fastcgi.5.5.11

#!/bin/bash
PHPRC="/opt/phpfarm/src/php-5.5.11/php.ini-development"
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /opt/phpfarm/inst/bin/php-cgi-5.5.11

Первая строка

PHPRC="/opt/phpfarm/src/php-5.5.11/php.ini-development"

Говорит вам, что php.ini использовать это по-другому в Ubuntu. Последняя строка

exec /opt/phpfarm/inst/bin/php-cgi-5.5.11

также необходимо изменить для каждой конкретной версии. Я не уверен, что он делает, но я знаю, что это нужно изменить.

Шаг 6
Включите исполняемые файлы fastcgi для apache: пользователь и группа apache

Пример 1

[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.5.11
[root@test joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.5.11

Пример 2

[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.3
[root@test joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.3.3

Пример 3

[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.1
[root@test joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.3.1

Шаг 7
Редактирование файла httpd.conf
Вот что вам нужно для файла /etc/httpd/conf/httpd.conf. Сначала найдите «NameVirtualHost *: 80» и используйте его в качестве отправной точки. «#» Означает, что строка закомментирована. Раскомментируйте эту строку, удалив #. Теперь это должно выглядеть так.

NameVirtualHost *:80

Это позволит нескольким виртуальным хостам работать на Apache по их «ServerName» в каждой ссылке на виртуальный хост. Я оставил несколько строк с комментариями, чтобы показать вам, без чего вы можете обойтись. Убедитесь, что нижняя часть /etc/httpd/conf/httpd.conf выглядит следующим образом.

<VirtualHost *:80>
    ServerName test1.com
   #ServerAdmin [email protected]
    DocumentRoot /var/www/html/test1
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html/test1">
            Options +Indexes FollowSymLinks +ExecCGI
            AddHandler php5-fastcgi .php
            Action php5-fastcgi /cgi-bin/php.fastcgi.5.5.11
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName test2.com
#   ServerAdmin [email protected]
    DocumentRoot /var/www/html/test2
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html/test2">
            Options +Indexes FollowSymLinks +ExecCGI
            AddHandler php5-fastcgi .php
            Action php5-fastcgi /cgi-bin/php.fastcgi.5.3.3
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName test3.org
#   ServerAdmin [email protected]
    DocumentRoot /var/www/html/test3
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html/test3">
            Options +Indexes FollowSymLinks +ExecCGI
            AddHandler php5-fastcgi .php
            Action php5-fastcgi /cgi-bin/php.fastcgi.5.3.1
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName test4.net
#   ServerAdmin [email protected]
    DocumentRoot /var/www/html/test6
</VirtualHost>

Шаг 8
Редактирование файла etc / hosts
Вот что вам нужно в файле etc / hosts.

127.0.0.1   localhost test1.com test2.com test3.org test4.net
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Шаг 9

Теперь перезагрузите ваш сервер

service httpd restart

Шаг 10
тестирование
если вы добавите phpinfo () на каждый из сайтов index.php, вы заметите, что все версии php будут разными. также последний test4.net будет идти по умолчанию для centos. Также обратите внимание, что test3.org и test4.net не являются .com, но все равно будут работать. В будущем я планирую составить руководство для файлов phpfarm, чтобы вы могли установить их с поддержкой mysql. Это была еще одна проблема, с которой я столкнулся. Если вы заметили какие-либо ошибки в этом или вам трудно заставить его работать, пожалуйста, прокомментируйте, и я доберусь до него, как только смогу

Ответы на вопрос(1)

Ваш ответ на вопрос