`
radzhang
  • 浏览: 311951 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

nginx下安装PHP发生问题的逐步解决

 
阅读更多

[root@iZ23e06nkpkZ php-5.6.20]# ./configure --enable-fpm --with-mysql

configure: error: xml2-config not found. Please check your libxml2 installation.

[root@iZ23e06nkpkZ php-5.6.20]# rpm -qa |grep libxml2

libxml2-python-2.7.6-20.el6_7.1.x86_64

libxml2-2.7.6-20.el6_7.1.x86_64

重新安装libxml2和libxml2-devel包, yum安装的时候发现新版本会提示更新,需要更新的可以更新

[root@iZ23e06nkpkZ php-5.6.20]#  yum install libxml2

[root@iZ23e06nkpkZ php-5.6.20]# yum install libxml2-devel

[root@iZ23e06nkpkZ php-5.6.20]# ./configure --enable-fpm --with-mysql

[root@iZ23e06nkpkZ php-5.6.20]# make

[root@iZ23e06nkpkZ php-5.6.20]# make install

 安装完成之后,

 把安装目录下的相关信息复制到指定地方

[root@iZ23e06nkpkZ php-5.6.20]#cp php.ini-development /usr/local/lib/php.ini

注意:php官网上的Unix 系统下的 Nginx 1.4.x安装手册写的是 /usr/local/php/php.ini是错误的。

实际上phpinfo看到的Configuration File (php.ini) Path  /usr/local/lib  ,会导致php.ini加载不到。

 

[root@iZ23e06nkpkZ php-5.6.20]#cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

[root@iZ23e06nkpkZ php-5.6.20]#cp sapi/fpm/php-fpm /usr/local/bin

需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。

编辑php.ini

[root@iZ23e06nkpkZ php-5.6.20]#vim /usr/local/php/php.ini

修改cgi.fix_pathinfo=0

注2016-5-1:如果cgi.fix_pathinfo=0的话,就不能用pathinf功能了,thinkphp的rewrite

和U方法会出错,

http://192.168.1.1/weiphp/index.php?s=da会变成http://192.168.1.1.php?s=da

所以只能改成cgi.fix_pathinfo=1

 

在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。

 

vim /usr/local/etc/php-fpm.conf

找到以下内容并修改:

 

; Unix user/group of processes

; Note: The user is mandatory. If the group is not set, the default user's group

;       will be used.

user = www-data

group = www-data

 

创建php-fpm脚本。从安装目录复制init.d.php-fpm.in

# cp <php-5.3.3-source-dir>/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm

然后就可以

#service php-fpm start|restart|stop这样启动php-fpm了。

 

配置nginx.conf

/etc/nginx/conf.d/default.conf

为了能够使用thinkphp的pathinfo。

修改default.conf

    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm index.php;

        if (!-e $request_filename) {

            rewrite ^/index.php(.*)$ /index.php?s=$1 last;

            rewrite ^(.*)$ /index.php?s=$1 last;

            break;

        }

        #if (!-e $request_filename) {

        #    rewrite ^/(.*)$ /index.php/$1 last;

        #    break;

        #}

    }

//因为部署了多个项目,所以加一个context的location的rewrite

    location /weiphp/ {

        root /usr/share/nginx/html;

        index index.html index.htm index.php;

 

        if (!-e $request_filename){

            rewrite ^/weiphp/(.*)$ /weiphp/index.php?s=$1 last;

            break;

        }

    }

 

    location ~ \.php/?.*$ {

 

        root /usr/share/nginx/html;     //一开始这个地方没有加root /usr/share/nginx/html一直报404错误,找不到php文件。

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

 

        set $path_info "";

        set $real_script_name $fastcgi_script_name;

        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {

                set $real_script_name $1;

                set $path_info $2;

        }

 

        #include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;

        #fastcgi_param SCRIPT_FILENAME /scripts$real_script_name;

        fastcgi_param SCRIPT_NAME $real_script_name;

        #fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$real_script_name;

        fastcgi_param PATH_INFO $path_info;

        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        include        fastcgi_params;

        #include fastcgi_params;

    }

找不到php的错误。因为$document_root 的参数是由root html那一行定义的,默认是在/etc/nginx/html/ 所以把 html换成站点根目录就正常了。

 

其实也可以在fastcgi_params里配置。

查找文件。

[root@iZ23e06nkpkZ conf.d]# find /. -name "fastcgi*"

 

/./etc/nginx/fastcgi_params

 

用phpize安装扩展

[root@iZ23e06nkpkZ conf.d]# find /. -name "phpize"

 

/./usr/local/bin/phpize

当php编译完成后,php的bin目录下会有phpize这个脚本文件。在编译你要添加的扩展模块之前,执行以下phpize就可以了;

比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步

————————————————————————

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5/

/usr/local/webserver/php/bin/phpize

./configure –with-php-config=/usr/local/webserver/php/bin/php-config

make

make install

————————————————————————

注意./configure 后面可以指定的是php-config文件的路径

这样编译就完成了,还需要做的是在php.ini文件中加入extension值

extension = “memcache.so”

---------------------------------------------------------

注意:Cannot find config.m4.

这个错误是一个很傻的错误,解压以后需要cd到文件夹,不然phpize就会报错

动态编译PHP的memcache扩展库,在执行/usr/localphp/bin/phpize时出现了错误,

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.

很明显缺少文件,需要安装。网上找了下资料。

# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz

# tar -zvxf m4-1.4.9.tar.gz

# cd m4-1.4.9/

# ./configure && make && make install

# cd ../

# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz

# tar -zvxf autoconf-2.62.tar.gz

# cd autoconf-2.62/

# ./configure && make && make install

然后执行以下命令进行安装

#/usr/local/php/bin/phpize

#./configure –prefix=/usr/local/memcached –with-libevent=/usr/local/libevent –with-php-config=/usr/local/php/bin/php-config

 

#make && make install

 

php安装openssl 扩展

[root@iZ23e06nkpkZ bin]# cd /home/php-5.6.20/ext/openssl/

[root@iZ23e06nkpkZ openssl]# ll

total 280

-rw-r--r-- 1 1000 1000   1279 Mar 31 07:35 config0.m4

-rw-r--r-- 1 1000 1000    532 Mar 31 07:35 config.w32

-rw-r--r-- 1 1000 1000     65 Mar 31 07:35 CREDITS

-rw-r--r-- 1 1000 1000 151210 Mar 31 07:35 openssl.c

-rw-r--r-- 1 1000 1000   4664 Mar 31 07:35 openssl.dsp

-rw-r--r-- 1 1000 1000   4804 Mar 31 07:35 openssl.mak

-rw-r--r-- 1 1000 1000   4311 Mar 31 07:35 php_openssl.h

-rw-r--r-- 1 1000 1000  11104 Mar 31 07:35 README

drwxr-xr-x 2 1000 1000  12288 Mar 31 07:35 tests

-rw-r--r-- 1 1000 1000  73397 Mar 31 07:35 xp_ssl.c

[root@iZ23e06nkpkZ openssl]# /usr/local/bin/phpize

Cannot find config.m4. 

Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module

把config0.m4复制成config.m4

[root@iZ23e06nkpkZ openssl]# ./configure --with-php-config=/usr/local/bin/php-config

报错查了一下是没有openssl-dev类库。

configure: error: Cannot find OpenSSL's <evp.h>

通过yum 安装openssl-devel

 [root@iZ23e06nkpkZ openssl]# yum install openssl-devel

然后重新运行

[root@iZ23e06nkpkZ openssl]# ./configure --with-php-config=/usr/local/bin/php-config

[root@iZ23e06nkpkZ openssl]# make

[root@iZ23e06nkpkZ openssl]# make install

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/

编辑/usr/local/lib/php.ini 加上extension=openssl.so

 

php安装gd库扩展

[root@iZ23e06nkpkZ gd]#cd /home/php-5.6.20/ext/gd

[root@iZ23e06nkpkZ gd]# yum install freetype

[root@iZ23e06nkpkZ gd]# yum install libpng*   //如果不安装libpng的话,gd库编译的时候会报 configure: error: png.h not found.的错误

[root@iZ23e06nkpkZ gd]#/usr/local/bin/phpize

[root@iZ23e06nkpkZ gd]#./configure --with-php-config=/usr/local/bin/php-config

[root@iZ23e06nkpkZ gd]# make && make install

 

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/

Installing header files:           /usr/local/include/php/

编辑/usr/local/lib/php.ini 加上extension=gd.so

 

php安装pdo_mysql扩展

[root@iZ23e06nkpkZ pdo_mysql]# pwd

/home/php-5.6.20/ext/pdo_mysql

[root@iZ23e06nkpkZ pdo_mysql]# 

[root@iZ23e06nkpkZ pdo_mysql]# /usr/local/bin/phpize

[root@iZ23e06nkpkZ pdo_mysql]# ./configure --with-php-config=/usr/local/bin/php-config

[root@iZ23e06nkpkZ pdo_mysql]# make 

[root@iZ23e06nkpkZ pdo_mysql]# make install

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/

编辑/usr/local/lib/php.ini 加上extension=pdo_mysql.so

 

[root@iZ23e06nkpkZ mbstring]# pwd

/home/php-5.6.20/ext/mbstring

[root@iZ23e06nkpkZ mbstring]#  ./configure --with-php-config=/usr/local/bin/php-config

[root@iZ23e06nkpkZ mbstring]# make

[root@iZ23e06nkpkZ mbstring]# make install

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/

Installing header files:           /usr/local/include/php/

 编辑/usr/local/lib/php.ini 加上extension=mbstring.so

 

 

thinkphp的verify的图像不显示出来。是因为GD库里没有freetype的支持。

重新编译安装GD库用以支持freetype,jpeg等。

之前安装GD扩展的时候用的默认编译方式是不带jpeg,freetype等支持的。

[root@iZ23e06nkpkZ gd]# pwd

/home/php-5.6.20/ext/gd

[root@iZ23e06nkpkZ gd]#  ./configure --with-php-config=/usr/local/bin/php-config

先yum安装freetype* 和 libjpeg*

[root@iZ23e06nkpkZ gd]# yum install freetype* libjpeg*

然后用rpm -qa|grep jpeg和rpm -ql libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64找出libjpeg的安装位置。

freetype也一样。

[root@iZ23e06nkpkZ gd]# rpm -qa|grep jpeg

libjpeg-turbo-static-1.2.1-3.el6_5.x86_64

libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64

libjpeg-turbo-1.2.1-3.el6_5.x86_64

[root@iZ23e06nkpkZ gd]# rpm -ql libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64

/usr/include/jconfig.h

/usr/include/jerror.h

/usr/include/jmorecfg.h

/usr/include/jpeglib.h

/usr/lib64/libjpeg.so

/usr/share/doc/libjpeg-turbo-devel-1.2.1

/usr/share/doc/libjpeg-turbo-devel-1.2.1/coderules.txt

/usr/share/doc/libjpeg-turbo-devel-1.2.1/example.c

/usr/share/doc/libjpeg-turbo-devel-1.2.1/jconfig.txt

/usr/share/doc/libjpeg-turbo-devel-1.2.1/libjpeg.txt

/usr/share/doc/libjpeg-turbo-devel-1.2.1/structure.txt

[root@iZ23e06nkpkZ gd]# 

准备重新编译GD库,先清除一下之前的编译。

[root@iZ23e06nkpkZ gd]# make clean

[root@iZ23e06nkpkZ gd]# /usr/local/bin/phpize

指定freetype和libjpeg的安装路径

[root@iZ23e06nkpkZ gd]# ./configure --with-php-config=/usr/local/bin/php-config --with-jpeg-dir=/usr/lib64/ --with-freetype-dir=/usr/lib64/

[root@iZ23e06nkpkZ gd]# make && make install

重新启动php-fpm和nginx。

[root@iZ23e06nkpkZ gd]# service php-fpm restart

[root@iZ23e06nkpkZ gd]# service nginx restart

然后就发现phpinfo里gd库支持libjpeg和freetype了。

 

[root@iZ23e06nkpkZ curl]# pwd

/home/php-5.6.20/ext/curl

[root@iZ23e06nkpkZ curl]# yum install libcurl*

[root@iZ23e06nkpkZ curl]# /usr/local/bin/phpize

[root@iZ23e06nkpkZ curl]# ./configure --with-php-config=/usr/local/bin/php-config

[root@iZ23e06nkpkZ curl]# make && make install

 编辑/usr/local/lib/php.ini 加上extension=curl.so

分享到:
评论

相关推荐

    nginx安装, 解决跨域问题

    **Nginx安装与解决跨域问题** 在现代Web开发中,由于浏览器的同源策略,跨域问题经常出现,限制了不同源之间的通信。Nginx作为一个高性能的反向代理服务器,常被用于处理此类问题。本篇将详细介绍如何在Linux环境下...

    nginx一键安装包含自动安装脚本

    离线安装Nginx在没有网络连接或者网络环境不稳定的情况下特别有用。离线安装通常涉及以下几个步骤: 1. **下载依赖库**: Nginx在编译安装时需要依赖几个库,包括zlib(用于数据压缩)、pcre(Perl兼容正则表达式库...

    Nginx1.8.0安装简述

    Nginx 1.8.0 安装简述 Nginx 是一种流行的开源 Web 服务器软件,广泛应用于生产环境中。为了帮助读者快速掌握 Nginx 的安装过程,本文将详细介绍 Nginx 1.8.0 的安装步骤。 一、下载依赖项 在安装 Nginx 之前,...

    nginx 离线安装依赖nginx 离线安装依赖

    nginx 离线安装依赖nginx 离线安装依赖

    内网nginx全套安装环境

    同时,日志文件(默认位于`/var/log/nginx/access.log`和`error.log`)可以帮助诊断和解决问题。 7. **反向代理与负载均衡**: Nginx可以通过反向代理功能将请求转发到后端应用服务器,实现负载均衡,提高系统可用...

    Windows下Nginx的安装与配置

    Windows 下 Nginx 的安装与配置 Nginx 是一款高性能的、轻量级的 HTTP Web 服务器和反向代理服务器及电子邮件 IMAP/POP3/SMTP 代理服务器。其稳定性、丰富的功能集、示例配置文件和低系统资源的消耗使得其广泛应用...

    Windows+Nginx+PHP7安装配置

    在本文中,我们将详细介绍如何在Windows环境下安装和配置Nginx和PHP7,从而实现一个完美的PHP开发环境。本文将从头到尾详细介绍安装和配置的每一个步骤,使您能够快速解决问题,并少走弯路。 一、安装PHP7 首先,...

    nginx离线安装依赖项-linux系统/麒麟v10系统

    nginx离线安装依赖项_linux系统/麒麟v10系统. 离线安装 内网离线安装Nginx 安装Nginx的依赖包如下: PCRE(Perl Compatible Regular Expressions):Nginx使用PCRE来支持正则表达式,可以使用它更灵活地匹配和处理...

    arm架构nginx编译器安装

    本文将详细讲解在基于ARM架构的系统上编译安装Nginx的过程,这对于那些希望在嵌入式设备或基于ARM的服务器上运行高性能Web服务的用户来说至关重要。 首先,你需要确保你的ARM系统已经安装了必要的编译工具和依赖库...

    内网安装nginx(离线)

    本文将详细介绍如何在没有外网连接的情况下在内网安装Nginx,并探讨相关集群配置。 首先,你需要准备一个包含Nginx所有必需文件的离线资源包。这个资源包通常包括Nginx的源代码、编译所需的依赖库以及配置脚本。...

    nginx离线安装教程及安装包和依赖包

    nginx是非常常用的轻量级代理工具,本教程是nginx离线安装教程,并且附带了离线安装所需要的依赖包和安装包。 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。...

    基于linux下nginx的安装及项目部署

    - **Nginx介绍**:Nginx是由Igor Sysoev开发的,其设计目标是解决高并发下的性能问题。Nginx通过优化的多进程和异步非阻塞模型,提高了响应速度和资源利用率。 - **反向代理服务**:Nginx的反向代理功能可以隐藏...

    nginx php 安装与配置

    将其放在Nginx的`html`目录下(默认为`/usr/share/nginx/html`),然后访问`http://your_server_ip/info.php`,如果能显示PHP信息页面,说明Nginx和PHP已经成功结合。 **安全与优化** 1. 限制对PHP-FPM的访问,...

    nginx自动安装

    在Linux环境下手动安装Nginx通常涉及以下步骤: 1. 更新包管理器索引:这一步通常使用`apt-get update`(对于基于Debian的系统)或`yum check-update`(对于基于RPM的系统)。 2. 安装依赖:Nginx可能需要一些库和...

    nginx + php 安装配置——WEB页面

    安装完毕后,我们需要编辑Nginx的配置文件,通常位于`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/`目录下,创建一个新的虚拟主机配置。例如,创建一个名为`myweb.conf`的文件,并添加以下内容: ``` ...

    Nginx+php(FastCGI)一键安装

    3. 监控系统资源使用情况,及时发现并解决问题。 总之,通过一键安装脚本,可以快速搭建起一个功能完善的LNMP环境,包括Nginx、php-FastCGI、MySQL和memcache,同时部署Discuz论坛,实现高效稳定的Web服务。后续的...

    Nginx源码安装手册

    总结来说,本Nginx源码安装手册详细介绍了在生产环境下安装Nginx的完整过程,包括环境准备、下载源码、编译配置、模块选择和自启动脚本的配置。对于希望部署稳定且可控的Nginx服务器的用户,特别是那些对软件的安全...

    nginx安装文件+php安装文件+补丁+源码

    这里我们讨论的是一个包含Nginx安装文件、PHP安装文件、补丁和源码的压缩包,这将帮助我们快速搭建一个支持动态内容的Web服务器。 首先,让我们深入了解Nginx。Nginx是一款高性能的HTTP和反向代理服务器,以其高效...

    nginx离线安装.zip

    这个名为"nginx离线安装.zip"的压缩包显然包含了离线安装Nginx所需的所有关键组件,使得在没有网络连接的情况下也能进行安装。下面我们将详细探讨这些组件及其在Nginx安装过程中的作用。 1. PCRE (Perl Compatible ...

Global site tag (gtag.js) - Google Analytics