LNMP 之 PHP安装操作步骤
1、==>备份默认源==>下载mirrors.163.com源==>yum安装epel源
## 也可用别的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
##必要
yum install epel-release -y
====>查看依赖库
##查看依赖库
rpm -aq pcre pcre-devel openssl openssl-devel zlib-devel \
libxml2-devel libjpeg-turbo-devel libpng-devel libcurl-devel libxslt-devel \
freetype-devel gd-devel mhash mhash-devel mcrypt libmcrypt-devel
##安装依赖库
yum install pcre pcre-devel openssl openssl-devel zlib-devel \
libxml2-devel libjpeg-turbo-devel libpng-devel libcurl-devel libxslt-devel \
freetype-devel gd-devel mhash mhash-devel mcrypt libmcrypt-devel -y
mhash、mhash-devel加密扩展库、mcrypt加密扩展库
mhash mhash-devel mcrypt libmcrypt-devel
2、====>安装 libiconv-devel库,需要第三方;
##安装 libiconv-devel库
##cd 切换到下载目录下载
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
**libiconv 编译报错
切换到libiconv/目录下 执行 ***
cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h
============LNMP==============================================
3、====>配合nginx安装PHP-5.3.27参数 ===> --with-mysql=mysqlnd \
编译PHP
##基于ngxin安装加这项--with-mysql=mysqlnd,否则则是基于mysql安装
tar zxf php-5.3.27.tar.gz
cd php-5.3.27/
./configure \
--prefix=/usr/local/php-5.3.27 \
--with-mysql=/usr \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp
--with-fpm-user=nginx
--with-fpm-group=nginx 这里要注意 , 如果使用别的用户则更改成别的用户名
先执行以下一种再make否则会报错
##这是网上转载的方法,为防止编译报错的解决方法
## 目录没有用到
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
##目前测试来看,/etc/ld.so.conf.d 里已经自动加上了mysql的库指向文件
##所以这个方法暂时也没用过,不排除老版本必须修改
echo "/application/mysql/lib" >>/etc/ld.so.conf
ldconfig
进行编译安装
make && make install
##这条是为了创建软链接方便 管理,排除版本命令因素
ln -s /usr/local/php-5.3.27/ /server/app/php
[root@Lnmp tools]# ll php-5.3.27/php.ini*
-rw-r--r-- 1 101 101 69606 Jul 11 2013 php-5.3.27/php.ini-development ==>开发环境
-rw-r--r-- 1 101 101 69627 Jul 11 2013 php-5.3.27/php.ini-production ==>生产环境
##这条是从PHP包里复制php.ini-development php.ini-production
##php 配置文件
cp /server/data/php-5.3.27/php.ini* /usr/local/php-5.3.27/lib/php.ini
##php-fpm.conf.default默认只有一个default文件 ,创建新的php-fpm.conf.default
##php进程的配置文件
cd /usr/local/php-5.3.27/etc
mv php-fpm.conf.default php-fpm.conf
PHP启动关闭重启等
/usr/local/php/sbin/php-fpm -t ====>检查语法
/usr/local/php/sbin/php-fpm ====>启动PHP
netstat -lntup|grep php-fpm ====>查看服务进程
## 一个php-fpm master进程 两个 pool进程
ps -ef|grep php-fpm|grep -v grep
默认端口 127.0.0.1:9000 php.master
开机自启动:
##在 /etc/rc.local 添加
/usr/local/php/sbin/php-fpm
/usr/local/nginx/sbin/nginx
链接NGINX
nginx 于PHP 链接 (通过fastCGI) PHP进程默认端口 9000
vim /usr/local/nginx/conf/nginx.conf
##对应的站点加这个location
location ~.*\.(php|php5)?$ {
root html/bbs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
cd /usr/local/nginx/html/bbs
echo echo "<?php phpinfo();?>" > test_info.php
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
访问 bbs.etiantian.org/test_info.php
测试PHP与Nginx连通性
vim /usr/local/nginx/conf/nginx.conf
##对应的站点加这个location
location ~.*\.(php|php5)?$ {
root html/bbs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
cd /usr/local/nginx/html/bbs
echo echo "<?php phpinfo();?>" > test_info.php
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
访问 bbs.etiantian.org/test_info.php
测试PHP与Mysql连通性
在对应的html里创建这处 *.php文件 ,然后 通过浏览器访问,成功则代表链接正常
#### PHP7
<?php
$conn = new mysqli("cdb-xxxxxxxx.bj.tencentcdb.com:10016", "root", "woxxxxxxxxxxx7l!#");
if ($conn->connect_error) {
die("connect error: " . $conn->connect_error);
}
echo "connect success!";
?>
###PHP5
<?php
$link_id=mysql_connect("cdb-xxxxxxxx.bj.tencentcdb.com:10016", "root", "woxxxxxxxxxxx7l!#") or mysql_error();
if($link_id){
echo "mysql successful! \n";
}else{
echo mysql_error();
}
?>
常见的错误
----------------------------------------------------------------------------------------------------------
1.编译时找不到mysql.h头文件
编译报错 未找到 头文件 Cannot find MySQL header files under /usr/bin/mysql ;
解决方法
find / -name mysql.h
/usr/include/mysql/mysql.h
查找到mysql.h文件,更改参数为--with-mysql=/usr,如果find找不到,安装mysql-devel包,yum install mysql-devel
------------------------------------------------------------------------------------------------------------
2.编译报错 未找到 libmysqlclient.so等库
解决方法一
php编译时默认是在/usr/lib下面找库文件 ,mysql默认是在/usr/lib64/mysql/下面找库文件
把so文件拷贝到/usr/lib下
cp /usr/lib64/mysql/*.so /usr/lib/
解决方法二 不建议
直接省略参数 直接./configure 编译