PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面。
准备工作
下载安装文件
保险起见使用 php 官网下载:https://www.php.net/downloads
使用官网下载速度较慢,但是安全性有保障,如对安全性没有要求也可百度搜索相关镜像,本文选择最新稳定版本 PHP 8.1.6
wget https://www.php.net/distributions/php-8.1.6.tar.gz |
安装依赖
yum install libxml2 libxml2-devel libsqlite3x-devel openssl bzip2 libcurl-devel libcurl libjpeg libpng freetype gmp libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glib2 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 -y |
注意:当前 Centos 官方镜像已停止服务,
yum install安装devel软件时,如报错无法安装可尝试将/etc/yum.repos.d/目录下的CentOS-Base.repo.rpmsave中的文件内容覆盖至CentOS-Linux-BaseOS.repo,CentOS-AppStream.repo.rpmsave覆盖至CentOS-Linux-AppStream.repo,操作前请注意备份
因 yum 源中没有 oniguruma 包,这里使用 github 源码编译安装,项目地址:https://github.com/kkos/oniguruma
wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz |
创建用户
安全起见,我们需要创建一个用户用于运行 php,一般这个用户是禁止登陆的,本文创建用户名与用户组均为 www,这个名称可以自定义
# 创建用户组 |
-g www指定用户组-M不创建家目录(程序运行不需要家目录)-s /sbin/nologin不允许登录,更加安全
编译并安装
# 生成编译文件 |
如果使用 apache 的话,需要在编译参数中新增 --with-apxs2=/www/server/apache/bin/apxs,同时 --enable-fpm 参数可去除,其中 /www/server/apache 为 apache 安装目录,编译完成后在 apache 的配置文件中解注释对 php_module 的注释即可,本文不细讲 apache 配置。
配置
配置环境变量
在 /etc/profile 下新增 PATH=$PATH:/www/server/php81/bin && export PATH,使用 source /etc/profile 使配置立即生效。
创建 php-fpm 软链接:
ln -s /www/server/php81/sbin/php-fpm /www/server/php81/bin/php-fpm |
nginx 配置 php
- 复制配置文件,如果之前已经复制过请跳过此步骤:
cp /www/server/php81/etc/php-fpm.conf.default /www/server/php81/etc/php-fpm.conf |
- 启动 php-fpm:
/www/server/php81/sbin/php-fpm |
- 修改 nginx 配置文件
编辑 nginx.conf 文件,在对应的 server 下新增如下内容:
location ~ [^/]\.php(/|$) { |
重启 nginx ,nginx -s reload,在网站根目录新建 phpinfo.php 文件:
|
nginx php 多版本共存
在日常的开发中,不同项目可能需要不同版本的 php 来运行,这就需要通过一些配置来实现 php 的共存。多个 php 版本共存时,需要在编译时将不同版本的 php 安装到不同的目录。
打开 php 安装路径,编辑文件 etc/php-fpm.d/www.conf 或 etc/php-fpm.conf,在文件中新增或修改以下项:
[www] |
随后在 nginx 配置文件,对应的 server 中修改 fastcgi_pass 为刚才设置中的 listen 对应的路径,注意此文件 nginx 运行用户必须有读权限,否则会报错:
location ~ [^/]\.php(/|$) { |
php-fpm即php-Fastcgi Process Manager,php-fpm是FastCGI的实现,并提供了进程管理的功能。php-fpm进程包含master进程与worker进程,一般情况下,master进程只有一个,负责监听端口、调度请求,而worder进程则有多个,每个进程内部都嵌入了一个PHP解释器,是PHP代码真正运行的地方。前文设置中的worker即php-fpm的worker进程数量。
开机自启
编辑文件 /etc/init.d/php-fpm81,如需多版本兼容文件名后加上当前版本,如这里使用 php-fpm81,写入如下内容:
!/bin/bash |
随后添加为开机自启即可,如下:( php-fpm81 是上一步自定义得到文件名)
# 添加运行权限 |
手动操作命令如下:
# 启动 |
