如何在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
如果你得到编译错误,重新启动和try./compile.sh 5.3.1再次当我遇到这个问题
MYSQL和模块支持
步骤获得MySQL支持(和其他模块)自定义phpfarm安装的PHP版本5.5 0.14.这些说明适用于任何版本,只需将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()检出您的网页时; 功能,您将看到对这些模块的支持以及页面上不同的"配置命令"文本.
如果这些步骤没有完成,您可能需要再次执行此操作.为了再次执行此操作,首先从src文件夹和inst文件夹中删除文件.
rm -rf /opt/phpfarm/inst/php-5.5.14 rm -rf /opt/phpfarm/src/php-5.5.14
rm将删除文件夹,-rf代表r recursive和f force.参考:http://linuxcommand.org/lc3_man_pages/rm1.html
如果您有错误,请查看此站点.还有其他但我发现这个有用.
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
参考mysql和模块支持
使用PHP Farm激活php扩展的问题
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"
在将其添加到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步
安装yums
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
为apache启用fastcgi文件可执行: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的底部如下所示.
ServerName test1.com #ServerAdmin admin@tecadmin.net DocumentRoot /var/www/html/test1 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 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 ServerName test2.com # ServerAdmin admin@tecadmin.net DocumentRoot /var/www/html/test2 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 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 ServerName test3.org # ServerAdmin admin@tecadmin.net DocumentRoot /var/www/html/test3 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 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 ServerName test4.net # ServerAdmin admin@tecadmin.net DocumentRoot /var/www/html/test6
步骤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支持.这是我遇到的另一个问题.如果您发现此处有一些错误或难以使其发挥作用,请发表评论,我会尽快完成.