编译安装PHP7
安装编译工具
yum install -y gcc gcc-c++ automake autoconf libtool
安装基础库
yum install -y gd gd-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel \
libjpeg libjpeg-devel libjpeg-turo-devel libpng libpng-devel freetype freetype-devel libcurl-devel libxslt-devel pcre pcre-devel
#安装yum无法安装的libiconv库
#libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换
cd /data/tools
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
注意:错误如下
In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^
...
解决办法:
vim libiconv-1.14/srclib/stdio.in.h
将698行的代码:_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");替换为:
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
重新编译安装
./configure --prefix=/usr/local/libiconv
make
make install
#安装默认yum源无法安装的libmcrypt库(libmcrypt对于在程序运行时添加移除算法是有用的)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install libmcrypt-devel
#安装mhash加密扩展库
yum install mhash
#安装 mcrypt加密扩展库
yum install mcrypt
安装MariaDB
yum install mariadb mariadb-server mariadb-devel
安装Nginx
cd /data/tools wget http://nginx.org/download/nginx-1.12.1.tar.gz groupadd nginx useradd -r -g nginx -s /sbin/nologin nginx tar zxf nginx-1.12.1.tar.gz cd nginx-1.12.1 ./configure --prefix=/application/nginx-1.12.1 --user=nginx --group=nginx make make install ln -s /application/nginx-1.12.1 /application/nginx
编译安装php
cd /data/tools wget wget http://php.net/distributions/php-7.1.7.tar.gz tar zxf php-7.1.7.tar.gz cd php-7.1.7 ./configure \ --prefix=/application/php-7.1.7 \ --with-iconv-dir=/usr/local/libiconv \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-openssl \ --with-mhash \ --with-mcrypt \ --with-gd \ --with-curl \ --with-xmlrpc \ --with-xsl \ --with-libxml-dir \ --enable-gd-native-ttf \ --disable-debug \ --disable-rpath \ --enable-shared \ --with-mysql=shared,mysqlnd \ --with-mysqli=shared,mysqlnd \ --with-pdo-mysql=shared,mysqlnd \ --enable-zip \ --enable-soap \ --enable-static \ --enable-mbregex \ --enable-sockets \ --enable-short-tags \ --enable-inline-optimization \ --enable-ftp \ --enable-pcntl \ --enable-fpm \ --with-fpm-user=nginx \ --with-fpm-group=nginx make make install #复制配置文件 ln -s /application/php-7.1.7 /application/php cp /data/tools/php-7.1.7/php.ini-production /application/php/lib/php.ini cp /application//php/etc/php-fpm.conf.default /application/php/etc/php-fpm.conf cp /application/php/etc/php-fpm.d/www.conf.default /application/php/etc/php-fpm.d/www.conf
整合Nginx + php
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
启动php和Nginx
/application/php/sbin/php-fpm /application/nginx/sbin/nginx
写PHP测试页面,打开浏览器http://xxxxxx/a.php
<?php # /application/nginx/html/a.php phpinfo();
配置PHP与数据库的连接
#确认MySQL的模块存在 /application/php/lib/php/extensions cd /application/php/lib/php/extensions;ls no-debug-non-zts-20160303 ls no-debug-non-zts-20160303/ mysqli.a mysqli.so opcache.a opcache.so pdo_mysql.a pdo_mysql.so #这里我们使用mysqli.so来连接数据库,编辑php.ini,加入下面配置 vim /application/php/lib/php.ini ... extension_dir = "/application/php/lib/php/extensions/no-debug-non-zts-20160303" #配置在735行 extension=mysqli.so #配置877行 ... #重启php-fpm
启动Mariadb并且配置账号授权
写数据库测试页面
<?php
#/application/nginx/html/b.php
$conn = mysqli_connect('<数据库地址>','<账号>','<密码>');
if($conn){
echo "ok";
}else{
echo "fail";
}
打开浏览器http://xxxxxx/b.php,如果浏览器显示OK则表示数据库连接正常!
每天进步一点,加油!
浙公网安备 33010602011771号