发现yum安装许多坑
于是只好编译安装
第一步得到镜像地址
cd /usr/local/src
wget https://www.php.net/distributions/php-7.2.19.tar.gz
tar xzvf php-7.2.19.tar.gz
cd php-7.2.19
接下来是编译安装
配置命令
./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
拆开看更清晰:
./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
这个先不管了
解决方法:
yum install libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel -y
若是64位系统
解决方法:
yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y
编译php后发生warning:configure:WARNING:unrecognizedoptions:--with-mysql 只是php7版本不支持mysql模块
./configure --help 查看configure的正确语法,重新编译php支持mysql,改用--with-pdo-mysql
php7版本编译语句是:
./configure--prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--enable-fpm \--with-fpm-user=www \--with-fpm-group=www \--enable-mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--enable-mysqlnd-compression-support \--with-iconv-dir \--with-freetype-dir \--with-jpeg-dir \--with-png-dir \--with-zlib \--with-libxml-dir\--enable-xml \--disable-rpath \--enable-bcmath\--enable-shmop \--enable-sysvsem \--enable-inline-optimization \--with-curl --enable-mbregex \--enable-mbstring \--enable-intl \--with-mcrypt \--with-libmbfl \--enable-ftp \--with-gd \--enable-gd-jis-conv \--with-openssl \--with-mhash \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-zip \--enable-soap \--with-gettext \--disable-fileinfo \--enable-opcache \--with-pear \--enable-maintainer-zts \--with-ldap=shared \--without-gdbm
configure: WARNING: unrecognized options: --with-mcrypt, --enable-gd-native-ttf
php7.2不支持 --with-mcrypt, --enable-gd-native-ttf,把这两个选项删除掉。
修改后./configure通过的语句
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
[root@test php-5.2.13]# vi Makefile
在安裝 PHP 到系统中时要是发生「undefined reference to libiconv_open'」之类的错误信息,那表示在「./configure 」沒抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没給到要 link 的 iconv 函式库参数。 解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然后重新再次 make 即可。
或者用另一种办法
make ZEND_EXTRA_LIBS='-liconv'
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/
作者用的第一种办法解决的,编译好Makefile后,记得先make clean一下,再make,不然会报错
make && make install
See for instructions.
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
查询得知是应为vps内存太小没到1G引起的,在./configure时加--disable-fileinfo也不能解决
内存不足,mysql 5.5以上版本编译需要1G以上内存,可以编译安装mysql5.5