之前的php是5.6的版本,现在要安装swoole扩展,php7以下版本不支持,所以需要在安装一个php7.3的版本,安装成功后服务器上会有两个版本的php同时存在,原理就是之前的php继续监听9000端口,新安装的php监听9001端口,nginx或者apache在接收到http请求后根据不同的域名转发到不同的端口进行处理,从而达到多版本php共存的目的
安装php7.3
一、下载php源码,下了好几次都中断了,无奈从网页上下了,然后把安装包上传到服务器上
wget https://www.php.net/distributions/php-7.3.0.tar.gz
二、解压
tar -zxvf php-7.3.0.tar.gz
cd php-7.3.0
三、执行configure文件
./configure --prefix=/etc/php73 --enable-fpm --with-mysqli --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd --enable-mbstring --with-gd
说明:
prefix是指定你要安装的目录,我这里是安装到/etc/php73
enable-fpm是安装php-fpm
其余的都是需要添加的扩展,这里只是一部分扩展,大多时候还需要在php安装成功后添加新的扩展,后边说一下怎么手动添加php的扩展
四、执行安装,时间有点长,别急,等一会就好
make && make install
五、上边就安装完成了,还需要添加一些配置文件
1、php-fpm的配置文件
cd /etc/php73/etc
mv php-fpm.conf.default php-fpm.conf
2、修改php的执行文件
cd /etc/php73/etc/hp-fpm.d/
mv www.conf.default www.conf
六、php默认的监听端口是9000,现在要改成9001
vim www.conf
listen=127.0.0.1:9000改成listen=127.0.0.1:9001
七、修改配置文件php.ini
vim /etc/php73/lib/php.ini
cgi.fix_pathinfo=0
八、启动php-fpm
/etc/php73/sbin/php-fpm
ps aux|grep php 如果看到有结果则说明安装成功
开启php扩展
安装结束后会有一些扩展需要开启。说一下步骤,下载的源码包里基本上包含了大部分需要的扩展
开启php扩展一般需要四步
一、进入你要安装的扩展包文件夹下,如cd /etc/php-7.3.0/ext/zip
二、通过phpize生成编译文件 /etc/php73/bin/phpize
三、./configure
四、make && make install
五、在php.ini文件最后加入extension = zip.so
重启php-fpm后,输入 /etc/php73/bin/php -m就能检查扩展是否安装成功
重启php-fpm
1、ps -aux | grep php-fpm 查看所有进程
2、杀死所有进程
3、启动/etc/php73/sbin/php-fpm
修改apache配置文件使得不同域名分发请求不同版本的php
<VirtualHost *:80>
DocumentRoot "/home/test-php"
ServerName test-php.ponhu.cn
ServerAlias test-php.ponhu.cn
<Directory "/home/test-php/">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
Header set Access-Control-Allow-Origin *
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9001"
</FilesMatch>
</Directory>
ErrorLog "logs/test-php.cn-error_log"
CustomLog "logs/test-php.cn-access_log" common
</VirtualHost>
apache相关命令
检查apache的配置文件
apachectl -t
重启apache
apachectl restart
apache的可用模块
apachectl -t -D DUMP_MODULES