如何在 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 和模块支持
为 php 版本 5.5.14 的自定义 phpfarm 安装获取 MySQL 支持(和其他模块)的步骤。这些说明适用于任何版本,只需将 5.5.14 重命名为 5.4.3。您当然需要一个 mysql 服务器来连接以使用 php 中的 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/"
步骤 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() check out 您的网页时;功能,您将在页面上看到对这些模块的支持和不同的“配置命令”文本。
如果这些步骤没有按顺序完成,您可能需要再次执行。
为了再次执行此操作,首先从 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 和模块支持引用
Issue activating a php extension using PHP Farm
第2步
将 phpfarm 添加到您的个人资料中
将此添加到 .bashrc 的底部以供 root 和非 root 用户使用。 .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
您应该能够在不同的 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 运行多个网站
第四步
确保您的 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 支持进行安装。这是我遇到的另一个问题。如果您发现其中的一些错误或难以使其正常工作,请发表评论,我会尽快解决。
最佳答案
我的几个通知:
yum install php php-cli mod_fastcgi
是不正确的。不应启用 mod_php。还有mod_fastcgi
可以使用 mod_fcgid
在没有外部存储库的情况下安装<Directory "/var/www">
Options All +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.fastcgi.5.5.18
</Directory>
--with-libdir=lib64
到配置选项 关于php - apache centos 上的多个 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330670/