如何同时在 Centos 6.5 上运行多个 php 版本?
就是这样。
要求
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 & Module Support
Steps for getting MySQL support (and other modules) for custom phpfarm install of php version 5.5 .14. 这些说明适用于任何版本,只需将 5.5.14 重命名为 5.4.3 即可。您当然需要一个 mysql 服务器来连接以使用 php.ini 中的 mysql 模块。
这些步骤需要按此顺序完成
步骤 1A
确保您拥有这些路径并且日期时间正确我以 root 身份执行此操作。你应该有你打算使用的 date.timezone。
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/"
Step 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
现在以 root 身份编译。当你编译 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 将删除文件夹,-rf 代表 r 递归和 f 强制。参考: http: //linuxcommand.org/lc3_man_pages/rm1.html
如果你有错误检查这个网站。还有其他的,但我发现这个很有用。
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
mysql 和模块支持的参考
第 2 步
将 phpfarm 添加到您的个人资料中
对于 root 和非 root 用户,将此添加到 .bashrc 的底部。.bashrc 文件可以在用户根文件夹或 cd ~/ 然后 ls -all 中找到,您应该会看到它。
PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
将其添加到 root 和非 root 用户的 .bashrc 文件后,也可以在终端中执行此操作
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
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 版本,请制作其中一个文件。用版本号替换结尾
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
这将允许多个虚拟主机通过每个虚拟主机引用中的“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 支持。这是我遇到的另一个问题。如果您发现其中的一些错误或难以使其工作,请发表评论,我会尽快处理。