我怎样才能同时在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和模块支持
获取MySQL支持的步骤(和其他模块)的php版本5.5.14自定义phpfarm安装。 这些指令适用于任何版本,只需将5.5.14重新命名为5.4.3即可。 你当然会需要一个MySQL服务器来连接到使用php中的mysql模块。
这些步骤需要按照这个顺序完成
步骤1A
确保你有这些path和date时间是正确的,我做了这个根。 你应该有你打算使用的date.timezone。
cd /opt/phpfarm/src vi custom-php.ini date.timezone=America/Halifax include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"
步骤1B
确保你有这些path和date时间是正确的
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()检出网页时, function,你会看到这些模块和不同的“configuration命令”文本在页面上的支持。
如果这些步骤没有完成,您可能需要重新执行。 为了再次这样做,首先从src文件夹和inst文件夹中删除文件。
rm -rf /opt/phpfarm/inst/php-5.5.14 rm -rf /opt/phpfarm/src/php-5.5.14
rm将删除文件夹,-rf代表recursion和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添加到您的configuration文件
将其添加到.bashrc的根目录和非root用户的底部。 .bashrc文件可以在用户根文件夹或cd〜/然后ls -all中find,你应该可以看到它。
PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
在将它添加到root和非root用户的.bashrc文件之后,还要在terminal中执行此操作
export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
现在退出terminal并重新login。尝试此命令
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步
安装yums
yum install php php-cli mod_fastcgi
注意在这一点上,如果你尝试运行switch-phpfarm 5.5.11,它将无法正常工作,但那没关系。 我们仍然可以使用不同版本的php运行多个网站
步骤4
确保你的cgi-bin被创build并且configuration文件
$ cd /var/www
如果cgi-bin不在这里创build它
$ mkdir cgi-bin
对于每个版本的PHP,你打算使用这些文件之一。 用版本号replace结尾
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
第七步
编辑httpd.conf文件
这是你需要的/etc/httpd/conf/httpd.conf文件。 首先find“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步
testing
如果你添加phpinfo()到每个index.php站点,你会注意到所有的php版本都会有所不同。 也是最后一个test4.net将与默认为centos去。 另外请注意,test3.org和test4.net不是.com的,但仍然有效。 在将来,我打算为phpfarm文件做一个指导,所以你可以用mysql支持来安装。 这是我遇到的另一个问题。 如果您发现有些错误或难以使用,请发表评论,我会尽快解决。
来自我的几个通知:
yum install php php-cli mod_fastcgi
是不正确的。 mod_php不应该被启用。 也可以使用mod_fcgid
在不使用外部存储库的情况下安装mod_fcgid
设置PHP版本的所有主机没有mod_php启用添加到httpd.conf
<Directory "/var/www"> Options All +ExecCGI AddHandler php-cgi .php Action php-cgi /cgi-bin/php.fastcgi.5.5.18 </Directory>
--with-libdir=lib64
添加配置选项