在 openEuler Linux 上安装 PHP
openEuler 使用 dnf 作为默认包管理器,PHP 通常可以直接从系统软件源安装。不同 openEuler 版本提供的默认 PHP 版本会有差异:22.03 LTS 常见为 PHP 7.4,24.03 LTS 常见为 PHP 8.1,25.09 则可能提供 PHP 8.4。
如果只是部署博客、CMS 或普通 Web 应用,建议优先使用 dnf 安装默认 PHP 版本。
1. 确认系统版本
安装前先确认当前 openEuler 版本,避免后续版本不匹配。
cat /etc/os-release
uname -r
2. 刷新软件源
sudo dnf makecache
如果很久没有更新,也可以先执行:
sudo dnf update -y
3. 查看可用 PHP 版本
如果系统支持 DNF 模块,可以先查看有哪些 PHP 模块流:
dnf module list php
如果能看到 php:8.1、php:8.2 等模块流,说明可以通过模块方式选择版本。
如果只看到普通软件包,则直接使用 dnf install php 安装默认版本即可。
4. 安装默认 PHP 版本
执行:
sudo dnf install -y php php-cli php-fpm php-common
安装后查看版本:
php -v
如果只需要命令行脚本执行,不搭配 Web 服务器,可以不安装 php-fpm。
5. 安装常用 PHP 扩展
不同项目需要的扩展不同,常见扩展包括:
sudo dnf install -y \
php-mysqlnd \
php-gd \
php-mbstring \
php-xml \
php-curl \
php-zip \
php-opcache \
php-json \
php-pdo \
php-bcmath \
php-intl
如果后续需要编译 PECL 扩展,可以再安装:
sudo dnf install -y php-devel php-pear
6. 通过模块安装指定版本(可选)
如果默认 PHP 版本不符合需求,可以尝试使用模块安装。例如安装 PHP 8.1:
sudo dnf module reset php
sudo dnf module enable php:8.1
sudo dnf install -y php php-fpm php-cli php-common
如果系统不支持 dnf module,则不能通过这种方式切换版本,需要确认当前 openEuler 版本是否提供对应 PHP 包。
7. 启动 PHP-FPM
如果搭配 Nginx 使用,需要启动 PHP-FPM:
sudo systemctl enable --now php-fpm
查看运行状态:
systemctl status php-fpm
如果输出中包含 active (running),说明 PHP-FPM 已正常运行。
常用管理命令:
| 命令 | 作用 |
|---|---|
sudo systemctl start php-fpm |
启动 PHP-FPM |
sudo systemctl stop php-fpm |
停止 PHP-FPM |
sudo systemctl restart php-fpm |
重启 PHP-FPM |
sudo systemctl reload php-fpm |
重新加载配置 |
sudo systemctl enable php-fpm |
设置开机自启 |
8. 配置 PHP-FPM
PHP-FPM 的进程池配置通常位于:
/etc/php-fpm.d/www.conf
查看当前监听方式:
grep ^listen /etc/php-fpm.d/www.conf
常见有两种方式:
listen = /run/php-fpm/www.sock:Unix Socket,适合单机 Nginx + PHP-FPMlisten = 127.0.0.1:9000:TCP 监听,适合容器或跨服务器部署
如果 Nginx 使用 Unix Socket 连接,需要确保 PHP-FPM 的运行用户和 Nginx 一致。例如:
user = nginx
group = nginx
修改配置后重启 PHP-FPM:
sudo systemctl restart php-fpm
9. 配置 Nginx 支持 PHP
如果已经安装 Nginx,可以在站点配置中添加 PHP 支持。例如:
sudo vim /etc/nginx/conf.d/default.conf
添加或修改:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
如果 PHP-FPM 使用 TCP 监听,则改为:
fastcgi_pass 127.0.0.1:9000;
检查配置并重新加载:
sudo nginx -t
sudo systemctl reload nginx
10. 创建测试页面
创建测试文件:
sudo vim /usr/share/nginx/html/info.php
写入:
<?php phpinfo(); ?>
然后在浏览器中访问:
http://服务器IP/info.php
如果能正常显示 PHP 信息页面,说明 PHP 与 Nginx 已经打通。
测试完成后,建议删除该文件,避免泄露服务器信息:
sudo rm /usr/share/nginx/html/info.php
11. 调整 php.ini 常用参数
PHP 主配置文件通常位于:
/etc/php.ini
可以根据需要调整:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
date.timezone = Asia/Shanghai
expose_php = Off
修改后重启 PHP-FPM:
sudo systemctl restart php-fpm
常见问题
| 问题 | 处理方式 |
|---|---|
php: command not found |
执行 sudo dnf install -y php php-cli |
| PHP-FPM 启动失败 | 检查 systemctl status php-fpm 和日志 |
| Nginx 返回 502 | 确认 PHP-FPM 已启动,且 Nginx 的 fastcgi_pass 与 PHP-FPM 监听方式一致 |
| 找不到扩展包 | 执行 dnf search php- 查找可用扩展 |
| 版本不符合预期 | 使用 dnf module list php 查看可用模块流 |
小结
在 openEuler 上安装 PHP,推荐直接使用:
sudo dnf makecache
sudo dnf install -y php php-cli php-fpm php-common
sudo systemctl enable --now php-fpm
如果需要搭配 Nginx,再安装常用扩展,并在 Nginx 中配置 fastcgi_pass 指向 PHP-FPM。对于大多数博客、CMS 或 Web 应用来说,这套组合已经足够使用。
- 点赞
- 收藏
- 关注作者
评论(0)