centos 编译安装PHP7.1.33
参考链接地址:https://www.php.net/manual/zh/install.unix.nginx.php
1、首先进行yum安装扩展
yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel
yum install gcc*
yum install openssl*
安装libiconv
libiconv库: 为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。
cd /usr/local/ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz tar -zxvf libiconv-1.16.tar.gz cd libiconv-1.16 配置 ./configure --prefix=/usr/local/libiconv 编译 make 安装 make install 建立软连接(没有进行该操作,可参考) ln -s /usr/local/lib/libiconv.so /usr/lib ln -s /usr/local/lib/libiconv.so.2 /usr/lib
2、之后进行解压php
wget https://www.php.net/releases/php-7.1.33.tar.gz (选择想要安装的指定版本即可)
tar -zxvf php-7.1.33.tar.gz && cd php-7.1.33
3、配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure --help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。
./configure --enable-fpm --with-mysql
make
注:如果这步出现php报错:/usr/local/php-7.3.7/ext/iconv/iconv.c:2586: undefined reference to `libiconv_close'
部署php时报了下面的错误,因为php之前接触的不多,不太了解是什么原因,就到网上查了一下,发现这个问题很普遍,是因为编译产生的Makefile文件中
EXTRA_LIBS = -lcrypt -lresolv -lcrypt -lrt -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lssl -lcrypto -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt
一行少了一个加载的模块,叫liconv库,在后面加上-liconv即可。
顺便了解了一下,liconv的作用是完成内部编码方式和外部编码方式的转换。
参考链接地址:https://blog.csdn.net/qq_38038705/article/details/96423695
make install
4、创建配置文件,并将其复制到正确的位置。
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
5、需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
vim /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
6、在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www 用户和 www 用户组的身份运行。
vim /usr/local/etc/php-fpm.d/www.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 group = www
然后启动 php-fpm 服务:
vi /usr/local/etc/php-fpm.conf #注:将第125行,include=NONE/etc/php-fpm.d/*.conf,果断修改为 include=etc/php.fpm.d/*.conf,要不然这个文件的配置扩展会找不到,启动php-fpm命令报错
/usr/local/bin/php-fpm
本文档未涵盖对 php-fpm 进行进一步配置的信息,如果您需要更多信息,请查阅相关文档。
7、配置 Nginx 使其支持 PHP 应用:
vim /usr/local/nginx/conf/nginx.conf
修改默认的 location 块,使其支持 .php 文件:
location / {
root html;
index index.php index.html index.htm;
}
下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为 下面的内容:
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
重启 Nginx。
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
8、创建测试文件。
rm /usr/local/nginx/html/index.html
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
打开浏览器,访问 http://localhost,将会显示 phpinfo() 。
通过以上步骤的配置,Nginx 服务器现在可以以 SAPI SAPI 模块的方式支持 PHP 应用了。 当然,对于 Nginx 和 PHP 的配置,还有很多可用的选项, 请在对应的源代码目录执行 ./configure --help 来查阅更多配置选项。

浙公网安备 33010602011771号