Linux安装PHP8
CentOS 7上编译安装PHP 8.1及Nginx 配置支持PHP
Linux下安装PHP8环境
安装编译环境
安装编译环境依赖包
yum -y install gcc gcc-c++ glibc automake autoconf libtool make |
安装编译 php 依赖库
yum -y install libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel libicu-devel oniguruma-devel libxslt-devel |
下载PHP包
wget https://www.php.net/distributions/php-8.1.9.tar.gz |
tar -xzxvf php-8.1.9.tar.gz |
配置PHP环境
./configure \ |
编译安装 php
采用两个核心编译
make -j 2 && make install |
PHP配置文件编辑
php.ini
创建php.ini配置文件
cp php.ini-production /usr/local/php8/etc/php.ini |
修改php.ini配置文件
vim /usr/local/php8/etc/php.ini |
session.save_path = "/tmp" #将注释打开 |
php-fpm
设置php-fpm配置文件
cd /usr/local/php8/etc |
cp php-fpm.conf.default php-fpm.conf |
vim php-fpm.conf |
将注释取消并修改
pid = /var/run/php-fpm.pid |
php-fpm参数优化
cd /usr/local/php8/etc/php-fpm.d/ |
cp www.conf.default www.conf |
删除文件中;的注释和空格
sed -i '/^;.*/d;/^$/d' www.conf |
删除文件中的 #注释
sed -i '/#.*/d' www.conf |
优化后
[www] |
创建php-fpm执行用户
创建nginx用户
增加nginx用户,并修改nginx服务的默认用户
useradd nginx -s /sbin/nologin -M |
php-fpm相关命令
php-fpm 启动与检查
启动php-fpm
/usr/local/php8/sbin/php-fpm |
检查 php-fpm 是否成功启动
ps aux | grep php-fpm |
php-fpm 环境变量配置
配置 php-fpm 系统环境变量
vim /etc/profile.d/php.sh |
export PHP_HOME=/usr/local/php8 |
source /etc/profile.d/php.sh |
php-fpm 开机自启动
配置 php-fpm 开机自启动
vim /lib/systemd/system/php-fpm.service |
[Unit] |
systemctl daemon-reload |
停止 php-fpm
pkill php-fpm |
用 systemctl 启动 php-fpm
systemctl start php-fpm.service |
设置 php-fpm 开机启动
systemctl enable php-fpm.service |
php-fpm 其他管理命令
systemctl stop php-fpm.service # 停止服务 |
Nginx 配置支持PHP
配置文件
server |
验证文件
cd /usr/local/nginx/html/ |
vim index.php |
<?php |
重启php-frm
systemctl restart php-fpm.service |
重载nginx
systemctl reload nginx |
访问验证
http://127.0.0.1:80/index.php |
问题记录
环境依赖问题
oniguruma
依赖不存在
解决 yum install oniguruma oniguruma-devel 安装不生效问题
Centos 7 安装 oniguruma oniguruma-devel
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm |
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm |
libzip
依赖不存在
报错:Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met
wget https://libzip.org/download/libzip-1.2.0.tar.gz |
tar zxvf libzip-1.2.0.tar.gz |
./configure |
libxml-2.0 >= 2.7.6
系统环境:Rocky Linux release 9.3 (Blue Onyx)
执行命令./configure –prefi…时报configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not me
yum install libxml2-devel |
openssl >= 1.0.2
系统环境:Rocky Linux release 9.3 (Blue Onyx)
Rocky Linux 安装 OpenSSL 1.1.1 - 部分参考
Installing OpenSSL 3.x on Rocky/Alma/CentOS/RHEL 8 - 部分参考
更新
sudo dnf update -y |
安装
sudo dnf install -y make gcc perl-core pcre-devel wget zlib-devel |
下载openSSL
wget https://ftp.openssl.org/source/openssl-1.1.1u.tar.gz |
配置
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl |
安装
make -j $(nproc) && make install |
读取配置
sudo ldconfig |
添加环境变量
sudo tee /etc/profile.d/openssl.sh<<EOF |
刷新环境变量
source /etc/profile.d/openssl.sh |
执行命令./configure –prefi…时报Package ‘openssl‘, required by ‘virtual:world‘, not found
yum install openssl-devel -y |
sqlite3 >= 3.7.7
系统环境:Rocky Linux release 9.3 (Blue Onyx)
configure: error: Package requirements (sqlite3 >= 3.7.7) were not met:
Package ‘sqlite3’, required by ‘virtual:world’, not found
configure: error: Package requirements (sqlite3 」 3.7.4) were not met:
yum -y install sqlite-devel |
libcurl
系统环境:Rocky Linux release 9.3 (Blue Onyx)
执行命令./configure –prefi…时报Package ‘libcurl‘, required by ‘virtual:world‘, not found
yum install libcurl-devel -y |
oniguruma
系统环境:Rocky Linux release 9.3 (Blue Onyx)
Package ‘oniguruma’, required by ‘virtual:world’, not found
yum install -y https://dl.rockylinux.org/pub/rocky/9/AppStream/x86_64/os/Packages/o/oniguruma-6.9.6-1.el9.5.x86_64.rpm |
yum install -y https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm |
nginx启动报错
解决nginx启动报错nginx: [emerg] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)
采取方法一
接口错误响应
PHP出现“headers already sent”原因及解决方案
错入日志:Warning: Cannot modify header information - headers already sent by ***
检查是否使用windows下的notepad编辑修改了php文件,php不支持UTF8编码文件的BOM头,当php文件头部出现BOM时候会导致内容被发送。