1、下载包
wget https://www.php.net/distributions/php-7.2.7.tar.gz
2、解压
tar zxvf php-7.2.7.tar.gz
3、进入目录
cd php-7.2.7.tar.gz
4、初始化配置
./configure --prefix=/usr/local/php72 --with-config-file-path=/usr/local/php72 --with-pdo-mysql=mysqlnd --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --with-libxml-dir --with-xmlrpc --with-iconv --with-freetype-dir --with-pdo-mysql --enable-bcmath --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-tokenizer --enable-zip --without-pear --disable-phar --enable-sockets --enable-fpm --enable-soap --enable-pcntlr
5、如果有配置错误,需要安装模块,yum安装就好了。
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQL pcre-devel openssl openssl-devel curl-devel libxslt-devel
6、然后在重新安装
7、最后就是编译
make && make install
拷贝文件
cp php.ini-production /usr/local/php72/etc/php.ini (多版本extension_dir找对应的ext目录)
cp /usr/local/php72/etc/php-fpm.conf.default php-fpm.conf
cp /usr/local/php72/etc/php-fpm.d/www.conf.default www.conf (多版本listen不能一样)
添加文件/usr/local/php72/etc/pear.conf内容如下
#PEAR_Config 0.9
a:33:{s:9:"cache_dir";s:15:"/tmp/pear/cache";s:15:"default_channel";s:12:"pear.php.net";s:16:"preferred_mirror";s:12:"pear.php.net";s:13:"remote_config";s:0:"";s:13:"auto_discover";i:0;s:13:"master_server";s:12:"pear.php.net";s:10:"http_proxy";s:0:"";s:7:"php_dir";s:23:"/usr/local/php72/lib/php";s:7:"ext_dir";s:60:"/usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718";s:7:"doc_dir";s:27:"/usr/local/php72/lib/php/doc";s:7:"bin_dir";s:19:"/usr/local/php72/bin";s:8:"data_dir";s:28:"/usr/local/php72/lib/php/data";s:7:"cfg_dir";s:27:"/usr/local/php72/lib/php/cfg";s:7:"www_dir";s:30:"/usr/local/php72/lib/php/htdocs";s:7:"man_dir";s:33:"/usr/local/php72/lib/php/local/man";s:8:"test_dir";s:28:"/usr/local/php72/lib/php/test";s:8:"temp_dir";s:14:"/tmp/pear/temp";s:12:"download_dir";s:18:"/tmp/pear/download";s:7:"php_bin";s:23:"/usr/local/php72/bin/php";s:10:"php_prefix";s:0:"";s:10:"php_suffix";s:0:"";s:7:"php_ini";s:0:"";s:12:"metadata_dir";s:0:"";s:8:"username";s:0:"";s:8:"password";s:0:"";s:7:"verbose";i:1;s:15:"preferred_state";s:6:"stable";s:5:"umask";i:18;s:9:"cache_ttl";i:3600;s:8:"sig_type";s:3:"gpg";s:7:"sig_bin";s:12:"/usr/bin/gpg";s:9:"sig_keyid";s:0:"";s:10:"sig_keydir";s:28:"/usr/local/php72/etc/pearkeys";}
保存配置文件后,检验配置是否正确的方法为:
/usr/local/php72/sbin/php-fpm -t
如果出现诸如 “test is successful” 字样,说明配置没有问题。
/usr/local/php72/sbin/php-fpm
检测是否启动:
ps -ef |grep php-fpm
说明启动成功。
到此就结束了。
4、把PHP加入环境变量
在/etc/profile文件末尾加上如下两行代码
PATH=$PATH:/usr/local/php71/bin (多版本多行)
PATH=$PATH:/usr/local/php72/bin
然后执行命令
source /etc/profile
或执行点命令
./profile
使其修改生效,执行完可通过
echo php72
命令查看是否添加成功
5、加入启动代码
在/etc/rc.local文件末尾加上如下代码
/usr/local/php71/sbin/php-fpm (多版本多行)
/usr/local/php72/sbin/php-fpm
/usr/local/nginx/sbin/nginx
6、重启自动启动
在/root/.bashrc文件末尾加上如下代码
source /etc/profile
查看php版本
php72 -v
php72 -m
7、不同项目调用不同php版本
server {
listen 80;
server_name x.xxx.com;
root /xxx/public;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_connect_timeout 86400;
fastcgi_send_timeout 86400;
fastcgi_read_timeout 86400;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
}
server {
listen 80;
server_name y.xxx.com;
root /xxx/public;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_connect_timeout 86400;
fastcgi_send_timeout 86400;
fastcgi_read_timeout 86400;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
}
8.重启nginx
pkill -9 nginx
/usr/local/nginx/sbin/nginx
8.重启php-fpm
pkill -9 php-fpm
/usr/local/php71/sbin/php-fpm
/usr/local/php72/sbin/php-fpm
php官方扩展:https://pecl.php.net 自行查找
安装php-redis扩展:
wget https://pecl.php.net/get/redis-5.3.2.tgz
或者
wget https://github.com/nicolasff/phpredis/archive/5.3.2.tar.gz
tar zxvf phpredis-5.3.2.tar.gz
cd phpredis-5.3.2
/usr/local/php72/bin/phpize
./configure --with-php-config=/usr/local/php72/bin/php-config
make && make install
解决:Cannot find autoconf 报错
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make install
cd ../
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
tar -zvxf autoconf-2.62.tar.gz
cd autoconf-2.62/
./configure && make && make install
php扩展不生效解决办法:
pkill -9 php-fpm
/usr/local/php72/sbin/php-fpm -y /usr/local/php72/etc/php-fpm.conf -c /usr/local/php72/etc/php.ini