centos7.5 下编译安装PHP7.2
1、去PHP官网下载PHP7.2版本
wget http://cn2.php.net/distributions/php-7.2.12.tar.gz
wget http://cn2.php.net/distributions/php-7.4.33.tar.gz
- 如果执行命令后提示:-bash: wget: command not found ,用 yum install wget 安装即可
2、解压 **.tar.gz 安装包
tar -xzvf php-7.2.12.tar.gz
3、如果安装中提示缺少各种依赖包的话,请直接安装下面的所有包:
yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
安装7.4.33时候依赖包
yum -y install libxml2-devel openssl-devel sqlite-devel libcurl-devel libicu-devel gcc-c++ oniguruma oniguruma-devel libxslt-devel libpng-devel libjpeg-devel freetype-devel
4、进入PHP文件夹编译
./configure \ --prefix=/usr/local/php7.2 \ --with-config-file-path=/usr/local/php7.2/etc \ --enable-mysqlnd \ --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --disable-rpath \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --enable-cli \ --enable-mbregex \ --enable-fpm \ --enable-mbstring \ --with-mcrypt \ --with-gd \ --with-gettext \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --with-iconv \ --enable-zip \ --enable-soap \ --enable-short-tags \ --enable-static \ --with-xsl \ --with-pear \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-opcache=no \ --enable-maintainer-zts \ --enable-ftp
5、编译完成之后,执行安装命令:
make && make install
---------------------
至此已经安装完毕,接下来有需要的可以配置PHP,步骤如下:
6、在编译的源码包中,找到 php.ini-production,复制到/usr/local/php7.2下,并改名为php.ini
[root@localhost php-7.2.12]# cp php.ini-production /usr/local/php7.2/etc/php.ini
如果你不确定php.ini的目录位置的话 可以用如下查看
[root@localhost ~]# /usr/local/php7.2/bin/php --ini Configuration File (php.ini) Path: /usr/local/php7.2/etc
7、复制php-fpm启动脚本
[root@localhost php-7.2.12]# cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@localhost php-7.2.12]# chmod +x /etc/init.d/php-fpm
8、加入开机启动项
[root@localhost ~]# cd /etc/init.d/ [root@localhost init.d]# chkconfig --add php-fpm
9、给PHP做个软链接便于使用
[root@localhost php-7.2.12]# ln -s /usr/local/php7.2/bin/php /usr/bin/php
或者是直接将bin目录加入PATH环境变量中,如果你有多个版本还是建议软链接的方式好点。
[root@localhost php-7.2.12]# export PATH=/usr/local/php7.2/bin:$PATH
OK,完毕!
--------------------
常见错误:
问题1:
今天编译时出现xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution这个问题,没安装libxslt libxslt-devel软件包
解决方法:
yum -y install libxslt libxslt-devel
问题2:Nothing matches the include pattern
[root@mycloud etc]# service php-fpm start Starting php-fpm [12-Dec-2020 11:13:05] WARNING: Nothing matches the include pattern '/usr/local/php7.2/etc/php-fpm.d/*.conf' from /usr/local/php7.2/etc/php-fpm.conf at line 125. [12-Dec-2020 11:13:05] ERROR: No pool defined. at least one pool section must be specified in config file [12-Dec-2020 11:13:05] ERROR: failed to post process the configuration [12-Dec-2020 11:13:05] ERROR: FPM initialization failed failed [root@mycloud etc]# [root@mycloud etc]# [root@mycloud etc]# [root@mycloud etc]# pwd /usr/local/php7.2/etc [root@mycloud etc]# cd php-fpm.d/ [root@mycloud php-fpm.d]# ll total 20 -rw-r--r-- 1 root root 18866 Dec 12 11:00 www.conf.default [root@mycloud php-fpm.d]# cp www.conf.default www.conf [root@mycloud php-fpm.d]# ll total 40 -rw-r--r-- 1 root root 18866 Dec 12 11:14 www.conf -rw-r--r-- 1 root root 18866 Dec 12 11:00 www.conf.default
[root@mycloud php-fpm.d]# /usr/local/php7.2/sbin/php-fpm -t
[12-Dec-2020 11:14:42] NOTICE: configuration file /usr/local/php7.2/etc/php-fpm.conf test is successful
问题3:ERROR: [pool www] cannot get uid for user 'www'
vi www.conf
修改用户为当前系统用户名或者创建 www用户
创建www用户:
groupadd www
useradd -g www www
问题4:缺少sulite3的包
yum install sqlite-devel
问题5:No package 'oniguruma' found
1、在'--enable-mbstring'参数后添加'--disable-mbregex'参数,意为不使用mbstring的正则功能,不再需要oniguruma库。
2、使用源码安装oniguruma库
wget https://github.com/kkos/oniguruma/releases/download/v6.9.5_rev1/onig-6.9.5-rev1.tar.gz -O onig-6.9.5.tar.gz
./configure --prefix=/usr --libdir=/lib64
在使用./configure时添加‘--libdir=/lib64’参数,安装完成后重新编译PHP,如果不使用该参数则仍会报错。