php - apache centos上有多个php

如何同时在CentOS 6.5上运行多个PHP版本?
方法如下。
要求
Centos 6.5(可能与6.6和7一起使用)
Apache Apache/2.2.15(可能与其他版本一起使用)
本指南安装和使用
fastcgi(参见备选安装的注释)
PHP臂
此安装是通过这种方式完成的,因此它与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服务器来连接,以便在PHP中使用MySQL模块。
这些步骤需要按此顺序完成
步骤1a
确保您有这些路径,并且日期时间是正确的,我以根用户身份执行了此操作。你应该有你想要使用的日期时区。
cd /opt/phpfarm/src
vi custom-php.ini

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

步骤1b
确保您有这些路径并且日期时间是正确的
cd /opt/phpfarm/src
vi default-custom-php.ini

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

步骤1c
特别注意这条线
--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
现在编译为根目录。当您编译5.5.14时,phpfarm将自动查找一个名为custom-options-5.5.14.sh的文件,或者任何其他版本,当然还有各自的版本号。
./compile.sh 5.5.14

稍后,当您使用phpinfo();函数签出您的网页时,您将看到对这些模块的支持以及页面上不同的“配置命令”文本。
如果这些步骤没有按顺序完成,您可能需要重新执行。
要再次执行此操作,请首先从src文件夹和inst文件夹中删除文件。
rm -rf /opt/phpfarm/inst/php-5.5.14

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

rm将删除文件夹,-r f代表r recursive和f force。
参考:http://linuxcommand.org/lc3_man_pages/rm1.html
如果有错误,请检查此网站。还有其他的,但我发现这个有用。
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
mysql和模块支持参考
Issue activating a php extension using PHP Farm
PHP编译错误
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
步骤2
将phpfarm添加到配置文件中
对于根用户和非根用户,将其添加到.bashrc的底部。.bashrc文件可以在用户根文件夹或cd~/then ls-all中找到,您应该可以看到它。
PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

在将它添加到根用户和非根用户的.bashrc文件之后,也可以在终端中执行它。
export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

现在退出终端并重新登录。试试这个命令
switch-phpfarm 5.5.11

您应该能够在不同的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)的repo:
cd /tmp
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

步骤3
安装yums
yum install php php-cli mod_fastcgi

注释
此时,如果您尝试运行开关phpfarm 5.5.11,它将无法正常工作,但这是正常的。我们仍然可以用不同版本的PHP运行多个网站
步骤4
确保创建了CGI bin并配置了文件
$ cd  /var/www

如果CGI箱不在这里,创建它
$ 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"

告诉您witch php.ini在Ubuntu中使用它是不同的。最后一行
exec /opt/phpfarm/inst/bin/php-cgi-5.5.11

还需要为每个特定版本进行更改。我不知道它能做什么,但我知道它需要改变。
步骤6
为apache:apache用户和组启用fastcgi文件可执行
实施例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

这将允许多个虚拟主机在每个虚拟主机引用中通过其“servername”在Apache上操作。我留下了几行评论,告诉你你可以做什么没有。确保/etc/httpd/conf/httpd.conf的底部如下所示。
<VirtualHost *:80>
    ServerName test1.com
   #ServerAdmin admin@tecadmin.net
    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 admin@tecadmin.net
    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 admin@tecadmin.net
    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 admin@tecadmin.net
    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支持进行安装。这是我遇到的另一个问题。如果您注意到这方面的一些错误或很难使它工作,请发表评论,我会尽快解决。


最佳答案:

我的几条通知:
yum install php php-cli mod_fastcgi不正确。不应启用mod_php。也可以不使用外部存储库安装mod_fastcgi
对于php 5.2和libxml>=1.2.9,必须应用此补丁libxml29_compat.patch
要为所有未启用mod_php的主机设置php版本,请将其添加到httpd.conf

<Directory "/var/www">
    Options All +ExecCGI
    AddHandler php-cgi .php
    Action php-cgi /cgi-bin/php.fastcgi.5.5.18
</Directory>

在64位系统上编译时,由于lib64文件夹的原因,编译失败,因此应将mod_fcgid添加到configOptions

评论