@kklinan
2017-02-23T15:04:55.000000Z
字数 4301
阅读 3619
PHP
下载地址:http://php.net/downloads.php
cd /usr/local/src/sudo wget http://cn2.php.net/distributions/php-7.1.2.tar.gzsudo tar xvf php-7.1.2.tar.gz
cd /usr/local/src/php-7.1.2sudo ./configure --prefix=/usr/local/php7 \--with-curl \--with-freetype-dir \--with-gd \--with-gettext \--with-iconv-dir \--with-kerberos \--with-libdir=lib64 \--with-libxml-dir \--with-mysqli \--with-openssl \--with-pcre-regex \--with-pdo-mysql \--with-pdo-sqlite \--with-pear \--with-jpeg-dir \--with-png-dir \--with-xmlrpc \--with-zlib \--enable-fpm \--enable-bcmath \--enable-libxml \--enable-inline-optimization \--enable-gd-native-ttf \--enable-mbregex \--enable-mbstring \--enable-pcntl \--enable-shmop \--enable-soap \--enable-sockets \--enable-sysvsem \--enable-xml \--enable-zip \--enable-mysqlnd \--enable-opcache \--with-mcrypt \--with-bz2 \--with-fpm-user=[用户名] \--with-fpm-group=[用户组]#更多编译选项请参考 configure helpsudo makesudo make install
以下选项生产环境请勿添加:
--enable-debug \--enable-phpdbg \--enable-phpdbg-debug
sudo make 时若有如下错误提示
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_dtor':/usr/local/src/php-7.1.2/ext/iconv/iconv.c:2565: undefined reference to `libiconv_close'ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':/usr/local/src/php-7.1.2/ext/iconv/iconv.c:2591: undefined reference to `libiconv_open'ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_append_bucket':/usr/local/src/php-7.1.2/ext/iconv/iconv.c:2637: undefined reference to `libiconv'/usr/local/src/php-7.1.2/ext/iconv/iconv.c:2715: undefined reference to `libiconv'/usr/local/src/php-7.1.2/ext/iconv/iconv.c:2716: undefined reference to `libiconv'ext/xmlrpc/libxmlrpc/.libs/encodings.o: In function `convert':/usr/local/src/php-7.1.2/ext/xmlrpc/libxmlrpc/encodings.c:74: undefined reference to `libiconv_open'/usr/local/src/php-7.1.2/ext/xmlrpc/libxmlrpc/encodings.c:82: undefined reference to `libiconv'/usr/local/src/php-7.1.2/ext/xmlrpc/libxmlrpc/encodings.c:102: undefined reference to `libiconv_close'collect2: error: ld returned 1 exit statusmake: *** [sapi/cli/php] 错误 1
参考:
- https://bugs.php.net/bug.php?id=72299
- http://news.php.net/php.bugs/201358
- http://www.cnblogs.com/lovemdx/archive/2013/06/09/3128371.html
解决方法 NO.1
使用如下命令:
sudo make ZEND_EXTRA_LIBS='-liconv'
解决方法 NO.2
sduo vim Makefile在以下内容后追加 -liconv,然后重新 makeEXTRA_LIBS = -lcrypt -lz -lresolv -lcrypt -lrt -lmcrypt -lltdl -lpng -lz -ljpeg -lcurl -lbz2 -lz -lrt -lm -ldl -lnsl -lxml2 -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lcurl -lxml2 -lfreetype -lz -lpng12 -lxml2 -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lxm l2 -lssl -lcrypto -lcrypt
解决方法 NO.3
这种方式会导致老版本 PHP 加载 libiconv 共享库失败,需设置软连,下文有写。
安装 libiconv
下载地址:http://www.gnu.org/software/libiconv/#downloading
cd /usr/local/src/sudo wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gztar xvf libiconv-1.15.tar.gzcd libiconv-1.15.tar.gzsudo ./configure --prefix=/usr/local/libiconvsudo makesudo make install
安装 libiconv 之后,在 PHP7 源码目录使用 sudo make distclean 或 sudo make clean 清除 PHP 上次构建的痕迹[全部文件(包括 configure 生成的文件)或可编译文件)]。
然后将 configure 中的 --with-iconv-dir 配置目录重新编译:
--with-iconv-dir=/usr/local/libiconv/
#生产环境sudo cp /usr/local/src/php-7.1.2/php.ini-production /usr/local/php7/lib/php.ini#开发环境sudo cp /usr/local/src/php-7.1.2/php.ini-development /usr/local/php7/lib/php.ini
查看 PHP 配置选项
/usr/local/php7/bin/php-config 或 /usr/local/php7/bin/php -i | grep ini 或 /usr/local/php7/bin/php -i
设置时区
sudo vim /usr/local/php7/lib/php.ini
date.timezone = "Asia/Shanghai"
查看时区
/usr/local/php7/bin/php -i | grep timezone
其它配置项
略
sudo cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
sudo vim /usr/local/php7/etc/php-fpm.conf
打开以下注释(默认开启)
include=/usr/local/php7/etc/php-fpm.d/*.conf
sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
配置 www.conf
#老版 PHP 监听 9000,这里监听 9002listen = 127.0.0.1:9002
sudo cp /usr/local/src/php-7.1.2/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm7sudo chmod +x /etc/init.d/php-fpm7
命名为 php-fpm7 是为了和老版 PHP 共存。
并添加开机启动
查看系统服务列表: sudo chkconfig --list增加系统服务:sudo chkconfig --add php-fpm7开机启动: chkconfig php-fpm7 on
rcconf 或其它
查看 PHP 服务命令:sudo service php-fpm7
查看 PHP 状态: sudo service php-fpm7 status
启动 PHP 服务: sudo service php-fpm7 start
若老版本 PHP 启动报错:
Starting php-fpm /usr/local/php/sbin/php-fpm:error while loading shared libraries: libiconv.so.2:cannot open shared object file: No such file or directory failed
需设置共享库软连到/usr/lib目录:
sudo ln -s /usr/local/libiconv/lib/libiconv.so.2.6.0 /usr/lib/libiconv.so.2
参考: