Linux PHP7编译并与Nginx结合
来源:互联网 发布:淘宝客服用的打字软件 编辑:程序博客网 时间:2024/06/02 02:48
nginx+php的编译
apache一般是把php当做自己的一个模块来启动的.
而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式.
因此,为apache所编译的php,是不能用于nginx的.
把请求的信息转发给9000端口的PHP进程,
让PHP进程处理 指定目录下的PHP文件.
注意: 我们编译的PHP 要有如下功能:
连接mysql, gd,ttf, 以fpm(fascgi)方式运行
安装编译所需的库
# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQL pcre-devel
./configure --prefix=/usr/local/php \--exec-prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--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-png-dir \--with-xmlrpc \--with-xsl \--with-zlib \--with-zlib-dir \--with-mhash \--with-mcrypt \--with-openssl-dir \--with-jpeg-dir \--enable-gd-jis-conv \--enable-fpm \--enable-bcmath \--enable-libxml \--enable-inline-optimization \--enable-gd-native-ttf \--enable-mbregex \--enable-mbstring \--enable-opcache \--enable-pcntl \--enable-shmop \--enable-soap \--enable-sockets \--enable-sysvsem \--enable-xml \--enable-zip \--with-apxs2=/usr/local/httpd/bin/apxs
make时提示:
.....................................................
ext/iconv/.libs/iconv.o(.text+0x1738): In function `zif_iconv_mime_encode':
/home/jjdai/work/zhupiter/PHP-5.2.0/ext/iconv/iconv.c:1017: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x1756):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1031: undefined reference to `libiconv_open'
ext/iconv/.libs/iconv.o(.text+0x1993):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1290: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x19ad):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1293: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x1b01):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1102: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1b33):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1134: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1b5e):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1150: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1e10):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1202: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x1e3c):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1233: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x207f):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:1277: more undefined references to `libiconv' follow
ext/iconv/.libs/iconv.o(.text+0x2c08): In function `php_iconv_stream_filter_dtor':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2393: undefined reference to `libiconv_close'
ext/iconv/.libs/iconv.o(.text+0x2cf2): In function `php_iconv_stream_filter_append_bucket':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2543: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x2d34):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2543: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x2de7):/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2465: undefined reference to `libiconv'
ext/iconv/.libs/iconv.o(.text+0x30e2): In function `php_iconv_stream_filter_factory_create':
/home/jjdai/work/zhupiter/php-5.2.0/ext/iconv/iconv.c:2419: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
解决方法:
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#tar -zxvf libiconv-1.13.1.tar.gz
#cd libiconv-1.13.1
# ./configure --prefix=/usr/local/libiconv
# make
# make install
再检查php,指定 iconv的位置 --with-iconv=/usr/local/libiconv
#./configure --with-mysql=/backup/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-curl --with-gd --enable-gd-native-ttf --with-apxs2=/usr/local/apache/bin/apxs --enable-sockets --with-iconv=/usr/local/libiconv
#make
#make install
另一种解决方法为去除iconv模块也能正常编译php,如下:
編輯 Makefile 大約 115 行左右的地方:
EXTRA_LIBS = ..... -lcrypt
在最後加上 -liconv,例如:
EXTRA_LIBS = ..... -lcrypt -liconv
再运行make就可以了。
最后一种方法:由tonyty163提供:
#make ZEND_EXTRA_LIBS='-liconv'
#make install
1.复制配置文件
cp /usr/local/php-7.1.3/php.ini.development /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
cp /usr/local/src/php-7.1.3/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
2.加入服务
chmod +x /etc/init.d/php-fpmchkconfig --add php-fpmchkconfig --level 235 php-fpm on
# /etc/init.d/php-fpm start
编辑nginx.conf
location ~ \.php$ {
root html; #根目录
fastcgi_pass 127.0.0.1:9000; #把请求转交给9000端口的php进程
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
- Linux PHP7编译并与Nginx结合
- nginx与php7.0的结合
- Linux下php7.0.6+nginx环境编译安装
- 教你编译PHP7 (nginx+mysql+php7)
- 教你编译PHP7 (nginx+mysql+php7)
- 教你编译PHP7 (nginx+mysql+php7)
- 教你编译PHP7 (nginx+mysql+php7)
- 教你编译PHP7 (nginx+mysql+php7)
- 教你编译PHP7 (nginx+mysql+php7)
- linux安装php7+nginx
- CentOS 编译安装 php7 + nginx
- linux编译安装php7
- linux编译安装php7
- Linux 编译安装PHP7
- linux之debian安装php7与php5共存nginx
- Linux安装配置php7+nginx
- Linux安装配置php7+nginx
- Linux配置nginx、PHP7详解
- Paper Reading
- RDBMS与NOsql的区别
- springboot jsp报错:No Java compiler available
- Android下动态获取View的高度或宽度
- Jquery中ajax传输json数据显示undefined错误
- Linux PHP7编译并与Nginx结合
- Android例子—Fragment实例讲解—底部导航栏的实现(方法2)
- 嵌入式linux 内核模块调试ko的 insmod问题
- leetcode第三题
- 五大存储模型关系模型、键值存储、文档存储、列式存储、图形数
- 【ZJOI2015】bzoj3926 诸神眷顾的幻想乡
- Linux下Tomcat 8 常用命令和优化
- Training and investigating Residual Nets 自己分析
- 【序列】相加