CentOS6.8编译安装php7

  • 2017-08-22
  • 0
  • 0

前言

之前装了好几个版本的php,但是过了一段时间又有点忘记整个安装过程了,所以今天拿阿里云来装php最新稳定版即php7.1.8来加强一下记忆。php的安装还是挺简单,不像mysql那么麻烦,主要是扩展库的依赖,扩展库没问题基本上安装不会出现什么错误,接下来就看看整个安装过程吧。

准备

1.安装依赖包

yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel

编译时可能会报错,都是依赖包未安装的原因,在本文后面会有一些缺失的依赖包安装方法,找到相应的安装即可。

2.开始安装

① 到官网下载源码包,版本可以自己选择,下载后用ftp工具上传到服务器,也可以用rz命令发送到服务器

# tar xvf php-7.1.8.tar.bz -C /usr/local/src
# cd /usr/local/src/php-7.1.8
执行下面的配置文件:
# ./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/etc/php.d \
--with-config-file-path=/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-fpm \
--enable-opcache \
--disable-fileinfo \
--with-jpeg-dir \
--with-iconv-dir=/usr/local \
--with-freetype-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-exif \
--with-curl \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-inline-optimization \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-ftp \
--with-gettext \
--enable-zip \
--enable-soap \
--with-bz2
  执行以上的配置,如果出现License,才是正确的,才可以开始编译,如果出问题,就解决,一般是少了什么库。
②执行编译:
# make && make install

③添加php和php-fpm配置文件

# cp /usr/local/src/php-7.1.8/php.ini-production /etc/php.ini
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# sed -i ‘s@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@’ php-fpm.conf
⑤添加php-fpm启动脚本
# cp /usr/local/src/php-7.1.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
⑥添加php-fpm至服务列表并设置开机自启
# chkconfig –add php-fpm
# chkconfig –list php-fpm
# chkconfig php-fpm on
⑦启动服务
# service php-fpm start
注:
启动时如出现错误:WARNING: Nothing matches the include pattern ‘/usr/local/etc/php-fpm.d/*.conf’ from /usr/local/etc/php-fpm.conf at line 125.
ERROR:. No pool defined at least one pool section must be specified in config file
ERROR: failed to post process the configuration
ERROR: FPM initialization failed
解决:到指定目录执行cp www.conf.default www.conf
⑧添加nginx对fastcgi的支持

首先备份默认的配置文件。

# cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak

# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf

编辑/etc/nginx/nginx.conf,在所支持的主页面格式中添加php格式的主页,类似如下:
location / {
    root /usr/local/nginx/html;
    index index.php index.html index.htm;
}
取消以下内容前面的注释:
location ~ \.php$ {
    root /usr/local/nginx/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
    include fastcgi_params;
}
⑨重启nginx
# service nginx reload
最后测试看是否成功
在/usr/local/nginx/html/新建index.php的测试页面,内容如下:
<?php
phpinfo();
?>
如果浏览器出现php配置页面则证明安装成功。

补充:

在Linux下安装PHP过程中,可能会出现的编译问题:

第一个问题:configure: error: libjpeg.(a|so) not found

很多人都纳闷儿了,我都安装了的,为什么就找不到呢?找不到其实就应试想到它的搜索位置里面是没有的,要不然才不会说not found

原因是我们大部分一些软件只要rpm -qa | grep ***

这时下面就有两个重复的的软件

[root@test php-5.2.13]# rpm -qa | grep jpeg
libjpeg-6b-33
libjpeg-6b-33
libjpeg-devel-6b-33

32位和64位的都装了。你可以强制删除两个包,再重装64位的包。

rpm –allmatches –nodeps

这种方法真是损系统又损你.有时候强制执行的东西也会随便把lib中的一些包给强制删了.所以我不建议这么做,重复就让它重复吧,没关系的!

要解决问题就是它没找到,我安装了的,那我得去找找看它到底是放那里去了.

[root@test php-5.2.13]# updatedb
[root@test php-5.2.13]# locate libjpeg.so
/usr/lib64/libjpeg.so.62
/usr/lib64/libjpeg.so.62.0.0
/usr/lib64/libjpeg.so
/usr/lib/libjpeg.so
[root@test php-5.2.13]# locate libjpeg.a
/usr/lib64/libjpeg.a
/data0/software/jpeg-6b/libjpeg.a
[root@test php-5.2.13]#

我们在编译的时候经常看到一个库的文件,一般就是以*.a,*.so等名字的,尝试的搜索搜索,不行就模糊搜索!

通过上面的搜索其实就知道一些原因了,configure一般的搜索编译路径为/usr/lib/下,因为php默认就在/usr/lib/下找相关库文件,而x64机器上是在:/usr/lib64.这时你就可以直接把需要的库文件从/usr/lib64中拷贝到/usr/lib/中去就可以了.

那么记得要在configure前执行如下的命令:

cp -frp /usr/lib64/libjpeg.* /usr/lib/

第二个问题:configure: error: libjpng.(a|so) not found

cp -frp /usr/lib64/libpng* /usr/lib/  //和上面方法一样

第三个问题:configure: error: Cannot find ldap libraries in /usr/lib.

cp -frp /usr/lib64/libldap* /usr/lib/     //和上面方法一样

另外附一些常见的configure错误列表供参考:

第一个    configure: error: No curses/termcap library found
解决方法:
redhat and centos运行:yum -y install ncurses-devel
debian and ubuntu运行: apt-get install libncurses5-dev

第二个    configure: error: xml2-config not found
yum -y install libxml2-devel
debian:apt-get install libxml2-dev

第三个    configure: error: Cannot find OpenSSL’s
yum -y install openssl-devel

第四个     configure: error: libjpeg.(a|so) not found
yum -y install gd
yum -y install gd-devel
debian:apt-get install libjpeg-dev

第五个     configure: error: libpng.(a|so) not found.
apt-get install libpng12-dev

第六个     configure: error: cannot find output from lex; giving up
yum -y install flex

第七个     configure: error: mod_deflate has been requested but can not be   built due to prerequisite failures
yum -y install zlib-devel openssl-devel
debian:apt-get install zlib1g-dev

第八个     configure: error: libXpm.(a|so) not found.
apt-get install libxpm-dev

第九个     configure: error: freetype.h not found.
apt-get install libfreetype6-dev

第十个     configure: error: No recognized SSL/TLS toolkit detected
apt-get install libssl-dev

yum install libssl-dev

第十一个   Configure: error: xml2-config not found. Please check your libxml2 installation.

yum install libxml2 libxml2-devel (For Redhat & Fedora)

aptitude install libxml2-dev (For ubuntu)

第十二个   configure: error: Cannot find OpenSSL’s

yum install openssl openssl-devel

 

第十三个   Configure: error: Please reinstall the BZip2 distribution

yum install bzip2 bzip2-devel

第十四个   Configure: error: Please reinstall the libcurl distribution -easy.h should be in /include/curl/

yum install curl curl-devel (For Redhat & Fedora)

install libcurl4-gnutls-dev (For Ubuntu)

 

第十五个   Configure: error: libjpeg.(also) not found.

yum -y install gd
yum -y install gd-devel
yum install libjpeg libjpeg-devel

第十六个   Configure: error: libpng.(also) not found.

yum install libpng libpng-devel
apt-get install libpng12-dev

第十七个   Configure: error: freetype.h not found.
yum install freetype-devel

第十八个   Configure: error: Unable to locate gmp.h

yum install gmp-devel

第十九个   Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!

解决方法:
yum install mysql-devel (For Redhat & Fedora)

apt-get install libmysql++-dev (For Ubuntu)

第二十个   Configure: error: Please reinstall the ncurses distribution

yum install ncurses ncurses-devel

第二十一个 Checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!

方法 :
yum install unixODBC-devel

第二十二个 Configure: error: Cannot find pspell

yum install pspell-devel

第二十三个 configure: error: mcrypt.h not found. Please reinstall libmcrypt.

yum install libmcrypt libmcrypt-devel (For Redhat & Fedora)

apt-get install libmcrypt-dev

第二十四个 Configure: error: snmp.h not found. Check your SNMP installation.

yum install net-snmp net-snmp-devel

第二十五个 开启LDAP服务还需要
yum -y install openldap-devel openldap-servers openldap-clients

第二十六个 configure: error: No curses/termcap library found
yum -y install ncurses-devel (for redhat)
apt-get install libncurses5-dev(for debian)

第二十七个 configure: error: cannot find output from lex; giving up
yum -y install flex

第二十八个 configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
yum -y install zlib-devel openssl-devel
debian:apt-get install zlib1g-dev

第二十九个 configure: error: libXpm.(a|so) not found.
apt-get install libxpm-dev

yum install libXpm

基本都是上面这些问题了。

评论

还没有任何评论,你来说两句吧