安装库
yum install libxml2-devel gd-devel libmcrypt-devel libcurl-devel openssl-devel
下载
wget -c http://be2.php.net/distributions/php-7.1.8.tar.gz
编译
1.解压进入目录
# cd php-7.1.8
2.编译配置
#./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-config-file-scan-dir=/usr/local/php7/etc/php.d \
--with-mcrypt=/usr/include \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache
出现如图所示
则表示配置没问题
然后执行
make && make install
然后配置 php-fpm.d
# cd /usr/local/php7/etc
# mv php-fpm.conf.default php-fpm.conf
# mv php-fpm.d/www.conf.defualt php-fpm.d/www.conf
# mv php-fpm.d/www.conf.default php-fpm.d/www.conf
然后进入 php 的源码目录
# cd php-7.1.8/sapi/fpm/
# cp init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm
# chkconfig --add php-fpm
# # chkconfig php-fpm on
然后启动
[root@aliyun fpm]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?
Starting php-fpm [26-Aug-2017 16:52:34] ERROR: [pool www] cannot get uid for user 'nginx'
[26-Aug-2017 16:52:34] ERROR: FPM initialization failed
failed
报错了?这要进入
# cd /usr/local/php7/etc/php-fpm.d/
# vim www.conf
将用户和组修改为何 nginx 一样的组合用户吧,这里我设置的是 www
user = www
group = www
或者编译的时候指定用户和组
--with-fpm-user=nginx \
--with-fpm-group=nginx \
用 nginx 做代理
编译 nginx 的配置文件
vim /usr/local/nginx/conf/nginx.conf
去掉默认的注释
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
修改为
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
root html;
index index.php index.html index.htm;
重启 nginx
/etc/init.d/nginx restart
在 web 站点的目录下新建一个 phpinfo.php 文件
[root@aliyun html]# pwd
/usr/local/nginx/html
[root@aliyun html]# vim phpinfo.php
[root@aliyun html]# cat phpinfo.php
<?php
phpinfo();
访问效果
问题
1.找不到 php.ini
进入源码目录
cp php.ini-production /usr/local/php7/etc/php.ini
然后执行
# /usr/local/php7/bin/php --ini
Configuration File (php.ini) Path: /usr/local/php7/etc
Loaded Configuration File: /usr/local/php7/etc/php.ini
Scan for additional .ini files in: /usr/local/php7/etc/php.d
Additional .ini files parsed: (none)
2.关闭响应头中的 php 版本
编辑 php.ini 找到如下参数设置为 off
expose_php = Off
3.通过 nginx请求 php 文件提示nginx File not found 错误,原因是php-fpm进程找不到SCRIPT_FILENAME配置的要执行的.php文件,php-fpm返回给nginx的默认404错误提示。
解决方案:确定是我上面那样配置的,不要打错了。