Download
Install
tar -zxvf php-7.1.24.tar.xz
cd php-7.1.24
./configure
make
sudo make isntall
Bug fix
0x01 undefined reference to `libiconv’
在makefile文件中找到EXTRA_LIBS
,在后面加上-liconv
,其作用是完成内部编码方式和外部编码方式的转换。
另外还可能存在cannot find -liconv
的问题,
解决方案如下
仓库地址:https://github.com/bnoordhuis/libiconv
# install
$ ./configure --prefix=/usr/local
$ make
$ make install
0x02 找不到php.ini文件
php -r "phpinfo();" | grep "php.ini"
结果只找到
Configuration File (php.ini) Path => /usr/local/lib
原因是,采用源码编译的方法,并不会自动生成php.ini,需要我们自己生成,通过上面这个命令,我们知道了php.ini文件应该放在/usr/local/lib
中
下面我们找找php.ini文件
可以看到,源码中其实已经有了两个模板,development显然是开发环境下的模板,production则是生产环境。下面复制过去即可
sudo cp ./php.ini-development -t /usr/local/lib
sudo mv /usr/local/lib/php.ini-development /usr/local/lib/php.ini
之后重启服务即可
0x03 update-alternatives管理PHP版本
# 优先级设得稍微大些
sudo update-alternatives --install /usr/bin/php php /usr/local/bin/php 80
0x04 整合apache
如果需要整合apache,需要在configure
的时候使用参数--with-apxs2
,参数内容为apache的apxs路径,需要apache打开SO模块,命令如下
./configure --with-apxs2=/usr/local/apache/bin/apxs
注意:如果带上--with-apxs2
会编译出ZTS版本的PHP
如果需要整合apache但又希望php-cli是NTS版本的话,建议分开编译:
即php-cli使用--prefix=/usr/local
而php-cgi(apache)使用其他指定的地址,如--prefix=/home/user/Desktop/apache_php
这种情况下,如果需要为apache-php编译插件的话,流程如下:
/home/user/Desktop/apache_php/bin/phpize
./configure --with-php-config=/home/user/Desktop/apache_php/bin/php-config
make && sudo make install
另外,记得在apache中指定php.ini的路径,避免与php-cli使用的php.ini重复,因为php-cli和php-cgi有可能需要的插件不一致,操作如下
在httpd.conf中插入下列语句(php.ini路径自己选定)
PHPIniDir /home/user/conf/apache_php/php.ini
0x05 mysqli,mysqlnd,pdo支持
./configure时带上下面的参数
--enable-pdo
--with-pdo-mysql
--enable-mysqlnd
--with-mysqli
0x06 较为完整的configure参数
./configure --prefix=/usr/local \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-pdo \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache \
--enable-exif