此方法仅是我小白本人尝试成功的方法,不保证会不会出现其他意料之外的问题,所以,开始前记得备份全站。

一. 下载和解压PHP7.2.0

wget http://cn2.php.net/distributions/php-7.2.0.tar.gz
tar -zxvf php-7.2.0.tar.gz
cd php-7.2.0

二. 编译PHP7.2.0

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli --with-curl

说明:由于PHP7.2不再支持mysql,而是用mysqli取代。因此会出现warning。不过没关系,如果需要安装php的mysql扩展,文章后面会有说明。

编译完成之后,执行安装命令

make && make install

安装过程大约需要20分钟时间,请耐心等待。

三、配置PHP

在之前编译的源码包中,找到 php.ini-production,复制到/usr/local/php下,并改名为php.ini:

cp php.ini-production /usr/local/php/php.ini

[可选项] 设置让PHP错误信息打印在页面上

vim /usr/local/php/php.ini

display_errors = On

 

修改/usr/local/php/etc/php-fpm.conf
添加脚本授权
listen.owner = www
listen.group = www
listen.mode = 0660

修改/usr/local/php/etc/php-fpm-template.conf
添加脚本授权
listen.owner = www
listen.group = www
listen.mode = 0660

如果已有站点  如果在AMH面板环境中存在站点,还需要将/usr/local/php/etc/fpm目录中,有站点域名标示的.conf文件进行添加上面的3行脚本。如果没有站点就不需要,因为模板我们添加了,添加的新站点会自动添加。
listen.owner = www
listen.group = www
listen.mode = 0660

四、PHP7.2的MySQL扩展

由于PHP7.2不再支持mysql,而是用mysqli取代,下面安装php的mysql扩展。

下载安装包:mysql-24d32a0.tar.gz 解压,并进入目录

tar -zxvf mysql-24d32a0.tar.gz
cd mysql-24d32a0
/usr/local/php/bin/phpize  #使用phpize初始化

编译mysql扩展,使用mysql native driver 作为mysql链接库

./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=mysqlnd

接下来,安装

make && make install

最后,编辑php.ini文件,在最后面加入 extension=mysql.so 即可。

vim /usr/local/php/php.ini

重启PHP,查看phpinfo()

/etc/init.d/php-fpm restart 

五、Linux PHP7的openssl扩展安装

Linux环境下使用PHPmailer发送邮件时,出现如下错误:

SMTP –
> ERROR: Failed to connect to server: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP? (32690)

出现这个问题的原因是当初编译安装PHP缺少了ssl库。

可以重新再次编译PHP,加上–enable-openssl参数即可。

但是如果只为了安装这一个扩展就去重新编译,未免有点麻烦,其实可以简单一点,只要安装openssl.so扩展就可以了。

1、找到之前编译安装PHP的安装包。

2、解压并进入文件夹

cd php7.2.0/ext/openssl

3、运行 phpize

/usr/local/php/bin/phpize

备注,如果出现如下错误:Cannot find config.m4.

Make sure that you run ‘/usr/local/php/bin/phpize’ in the top level source directory of the module

【解决办法】cp ./config0.m4 ./config.m4 即可解决。

4、编译和安装

./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
make && make install

5、然后进入最后提示的目录。

6、将 openssl.so 复制到PHP的扩展目录下

cp openssl.so /usr/local/php/include/php/ext

7、找到php.ini,在最后面添加如下内容

extension=openssl.so

8、重启php-fpm和nginx/apache,查看phpinfo();

好了,大功告成。

如果网站留言有问题,请参考是不是这个原因,《wordpress发送邮件过慢或无法发送问题》

PS:升级之后好像AMH4.2的SSL插件的https功能有问题,无法访问,没找到解决方案,所以我又还原了。