OpenEuler安装PHP环境
PHP
| openEuler 版本 | 默认 PHP 版本 | 可用模块/扩展 PHP 版本 | 可安装方式 | 备注 |
|---|---|---|---|---|
| 20.03 LTS SP1 | PHP 7.2 | PHP 7.2, 7.3, 7.4 (epol 源) | DNF/RPM | epol 源提供 PHP7.4;可编译扩展 |
| 22.03 LTS | PHP 7.4 | PHP 7.4, 8.0 | DNF 模块/epol | PHP7.4 稳定,适合 ThinkPHP 7/8;MySQL5.7 可用 |
| 23.03 LTS | PHP 8.0 | PHP 8.0, 8.1 | DNF 模块 | PHP7.4 开源包缺失,需编译安装 |
| 24.03 LTS | PHP 8.1 | PHP 8.1, 8.2 | DNF 模块 | PHP7.4 已经不再提供官方包,需源码安装 |
| 25.09 | PHP 8.4 | PHP 8.4 | 源码/手工编译 | PHP7.4 官方包完全缺失,MySQL5.7 官方 RPM 不兼容,需源码/容器化 |
#注意版本,安装PHP最新版8.4, PHP版本可以共存,7.4 和 8.4 配置Nginx时指向哪个就跑哪个
sudo dnf install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-json php-curl php-zip php-devel
#安装PHP7.4.openeuler25默认只有8,没有7.4升级包
sudo dnf install -y php74 php74-fpm php74-cli php74-common php74-mbstring php74-xml php74-pdo php74-mysqlnd
# 查看 PHP 版本
php -v
PHP-FPM配置
PHP-FPM 是 PHP 的 FastCGI 进程管理器,用于和 Nginx 连接
# 启动并开机自启 PHP-FPM
sudo systemctl enable php-fpm --now
# 检查状态
sudo systemctl status php-fpm
#查看监听方式,listen = /run/php-fpm/www.sock表示使用Unix Socket监听,不占用9000端口,如果使用Socket连接得保证文件权限能访问
grep ^listen /etc/php-fpm.d/www.conf
#修改 listen行,用;注释掉,然后添加 listen = 127.0.0.1:9000
vi /etc/php-fpm.d/www.conf
#user改为nginx,sudo命令启动时以这个配置用户启动进程
user = nginx
group = nginx
listen = 127.0.0.1:9000
#Nginx配置中也要同步修改/etc/nginx/conf.d/php-fpm.conf,其他的网站也同样要修改为 127.0.0.1:9000
vi /etc/nginx/conf.d/php-fpm.conf
upstream php-fpm {
server 127.0.0.1:9000;
}
PHP-FPM 默认监听 /run/php-fpm/www.sock 或 127.0.0.1:9000,Nginx 通过这个连接 PHP。
Nginx查看php相关配置
# 修改nginx默认的配置
vi /etc/nginx/nginx.conf
#内容如下
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#添加如下内容
location ~ \.php$ {
fastcgi_pass php-fpm;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
fastcgi_pass 指定的php-fpm在/etc/nginx/conf.d/php-fpm.conf , fastcgi_pass也可以直接写fastcgi_pass 127.0.0.1:9000;
nginx测试php
cd /usr/share/nginx/html
echo "<?php phpinfo();" > index.php
然后通过IP:80访问

ThinkPHP项目
一定要注意PHP版本,建立对应的Thi你看PHP版本
安装 Composer
# 安装依赖
sudo dnf install -y curl unzip
# 下载 Composer 安装器
curl -sS https://getcomposer.org/installer | php
# 移动到全局可执行
sudo mv composer.phar /usr/local/bin/composer
# 检查版本
composer --version
tp项目
# 进入网站目录
cd /www/wwwroot
#安装git
sudo dnf install -y git
#composer配置镜像,把阿里云设置成 canonical(最高优先级)
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
#恢复官方源
composer config -g --unset repos.packagist
composer clear-cache
# 创建项目thinkphp(如果有报错的话,项目是不能访问的,用本地创建然后上传即可)
composer create-project topthink/think thinkphp
# 设置权限
sudo chown -R nginx:nginx thinkphp
sudo chmod -R 755 thinkphp
Nginx配置文件
安装Nginx
初始化一个thinkphp项目
ThinkPHP 项目路径是 /var/www/html/thinkphp
#针对该项目创建 Nginx 配置
sudo vi /etc/nginx/conf.d/thinkphp.conf
内容如下
server {
listen 88;
server_name localhost;
root /var/www/html/thinkphp/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # 如果 PHP-FPM 用 socket 请改为 unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
•ThinkPHP 的入口在 public/index.php
•try_files 保证 URL 重写支持
测试Nginx配置并重启
sudo nginx -t
sudo systemctl restart nginx
OpenEuler25.09手动安装PHP74
OpenEuler25不支持PHP7.4
安装PHP7.4前置依赖
dnf install -y wget git curl unzip tar make gcc gcc-c++ autoconf automake \
bzip2 bzip2-devel libxml2-devel zlib-devel libcurl-devel libpng-devel \
freetype-devel libjpeg-devel libzip-devel oniguruma-devel ncurses-devel \
sqlite-devel libaio-devel openldap-devel libXpm-devel gmp-devel bison \
re2c bzip2 bzip2-devel
安装openssl-1.1
#安装
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar -zxvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
./config --prefix=/usr/local/openssl11 --openssldir=/usr/local/openssl11 shared zlib
make -j$(nproc)
make install
#设置环境变量
export LD_LIBRARY_PATH=/usr/local/openssl11/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/openssl11/lib/pkgconfig:$PKG_CONFIG_PATH
export CFLAGS="-I/usr/local/openssl11/include"
export LDFLAGS="-L/usr/local/openssl11/lib"
#检验版本
/usr/local/openssl11/bin/openssl version

PHP7.4编译安装
cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33
cd /usr/local/src/php-7.4.33
make clean
#静态链接 OpenSSL(彻底隔离系统库) --with-openssl=/usr/local/openssl11 \ --with-openssl-dir=/usr/local/openssl11 \ --enable-static \
./configure --prefix=/usr/local/php74 \
--with-openssl=/usr/local/openssl11 \
--with-openssl-dir=/usr/local/openssl11 \
--enable-static \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-fpm \
--with-zlib \
--enable-mbstring \
--with-curl \
--with-mysqli \
--with-pdo-mysql \
--with-zip \
--enable-opcache \
--enable-soap \
--enable-sockets
make -j$(nproc)
make install
#检查
/usr/local/php74/bin/php -v
configure

make

配置手动安装的php
#fpm配置文件
cd /usr/local/php74/etc/php-fpm.d/
vi /usr/local/php74/etc/php-fpm.d/www.conf
#修改php-fpm配置
listen = 127.0.0.1:9000
#官方默认模版
cd /usr/local/php74/etc
cp php-fpm.conf.default php-fpm.conf
#启动php-fpm
/usr/local/php74/sbin/php-fpm
注册php为systemd服务
#1.服务文件
vi /etc/systemd/system/php74-fpm.service
[Unit]
Description=The PHP 7.4 FastCGI Process Manager
After=network.target
[Service]
Type=notify
PIDFile=/usr/local/php74/var/run/php-fpm.pid
ExecStart=/usr/local/php74/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php74/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGTERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#2.刷新 systemd
systemctl daemon-reload
#3.启动并设置开机自启
systemctl start php74-fpm
systemctl enable php74-fpm
systemctl status php74-fpm
一键安装(未测试)
#!/bin/bash
set -e
# =========================================
# openEuler 25.09 安装 PHP7.4 + PHP-FPM + 常用扩展
# =========================================
echo "安装基础编译工具..."
dnf install -y wget git curl unzip tar make gcc gcc-c++ autoconf automake bzip2 bzip2-devel \
libxml2-devel zlib-devel libcurl-devel libpng-devel freetype-devel libjpeg-devel libzip-devel oniguruma-devel ncurses-devel
# 下载 PHP7.4 源码
cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33
echo "编译安装 PHP7.4..."
./configure --prefix=/usr/local/php74 \
--with-openssl=/usr/local/openssl11 \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-fpm \
--with-openssl \
--with-zlib \
--enable-mbstring \
--with-curl \
--with-mysqli \
--with-pdo-mysql \
--with-zip \
--enable-opcache \
--enable-soap \
--enable-sockets
make -j$(nproc)
make install
echo "配置 php.ini..."
cp php.ini-production /usr/local/php74/lib/php.ini
echo "配置 PHP-FPM..."
cp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf
cp /usr/local/php74/etc/php-fpm.d/www.conf.default /usr/local/php74/etc/php-fpm.d/www.conf
sed -i 's/^user = .*/user = nginx/' /usr/local/php74/etc/php-fpm.d/www.conf
sed -i 's/^group = .*/group = nginx/' /usr/local/php74/etc/php-fpm.d/www.conf
sed -i 's#^listen =.*#listen = /run/php74-fpm.sock#' /usr/local/php74/etc/php-fpm.d/www.conf
mkdir -p /run
# 创建 systemd 服务文件
cat >/etc/systemd/system/php74-fpm.service <<EOF
[Unit]
Description=PHP 7.4 FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/php74/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php74/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 \$MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable php74-fpm
systemctl start php74-fpm
echo "======================================"
echo "PHP7.4 安装完成!"
echo "PHP 路径:/usr/local/php74"
echo "PHP-FPM sock:/run/php74-fpm.sock"
echo "请用 /usr/local/php74/bin/php -v 检查版本"
echo "======================================"
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~


浙公网安备 33010602011771号