centos(64位) 安装PHP5.6,配置LNMP

下定决心自己整一个LNPM,第一次在Linux上搞开发环境,比win难多了。虚拟机centos6.5,网上搜了一些教程,撸起袖子开干,没想到坑一个接一个,时不时的挂起vpn google一下。好在我终于搞定了。下面整理一下我遇到的坑,以及整个解决过程。

第一坑:nginx 下 php  file not found 。

原因:nginx web执行php是通过php-fpm开执行,PHP5.3.3以前的PHP需要单独安装php-fpm补丁包,以后的版本不需要了。正确编译PHP并启动php-fpm即可,同时nginx.conf中配置好就行,重点是SCRIPT_FILENAME  $document_root$fastcgi_script_name;  这个不能写死了,如下:

location ~ \.php$ 

      {     

          #fastcgi_pass  unix:/tmp/php-cgi.sock;

          fastcgi_pass   127.0.0.1:9000;  #fastcgi监听端口,监听php-fpm*/

          fastcgi_index  index.php;

          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

          include        fcgi.conf;       #fastcgi配置文件,修改为以下内容*/

      }

第二坑: 连接数据库。Fatal error: Call to undefined function mysql_connect() 

由于不知道Linux下PHP各个模块都是需要编译的,第一次安装PHP 根本没在乎./configure 后的参数,从网上拷贝一份直接执行,导致数据库功能一直不成功,折腾了一礼拜。据我能看懂的部分,./configure 参数意义如下:

--prefix=/usr/local/php # 这是php的安装路径

--with-mysql=/usr   #这是mysql相关编译路径,这里网上很多都是--with-mysql=/usr/share/mysql,但我这样做,编译完提示一个error,Cannot find MySQL header files under /usr/share/mysql ,经查,有的说是因为64位电脑的原因,此处正确写法是 先 用 find / -name mysql.h  找到mysql.h的路径,然后写该路径的前缀。比如我电脑搜出来路径/usr/include/mysql/mysql.h ,所以前缀是 /usr

--with-mysql-sock --with-mysqli=/usr/lib64/mysql/mysql_config  # 这应该是mysqli 编译配置,后面的参数可以 先  find / -name mysql_config,然后填写

--enable-fpm # 开启php-fpm 功能

第三坑:找不到 mysql.h

我是采用 yum install mysql mysql-server 安装mysql,但找不到mysql.h,经查,

还需要 yum install mysql-devel

在我解决Fatal error: Call to undefined function mysql_connect()的过程中,想当然的以为php.ini中没开启mysql.so ,于是在php源码下进入cd ext/mysql/,

执行/usr/local/php/bin/phpize

然后编译,

./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/ --with-zlib-dir=/usr/local/lib

这里我试过--with-mysql=/usr/local/mysql/ 和 --with-mysql=/usr

最后在/usr/local/lib/php/extensions/no-debug-non-zts-20090626/中也添加了编译生成的mysql.so,修改php.ini,添加extension=mysql.so,重启php-fpm(备注:修改php.ini后Linux下重启nginx是没有用的,需要重启php-fpm),还是没有解决问题。

也许是我方法不对。 最后还是决定重头再来,我删除了mysql、php全部重装。终于好了。

下面是安装过程,因为编译PHP需要用到mysql路径,所以必须先安装mysql,有博客写可以通过/usr/local/php/bin/phpize后编译mysql.so,但是我没有成功。为了减少不必要的麻烦,还是先安装mysql,再安装PHP,nginx什么时候安装都可以。

第一步: mysql

   

 yum install mysql mysql-server   #询问是否要安装,输入Y即可自动安装,直到安装完成

       /etc/init.d/mysqld start   #启动MySQL

       chkconfig mysqld on   #设为开机启动

       cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

       shutdown -r now  #重启系统

2、为root账户设置密码

       mysql_secure_installation

       回车,根据提示输入Y

       输入2次密码,回车

       根据提示一路输入Y

       最后出现:Thanks for using MySQL!

第二步,安装nginx 

相关推荐