在 openEuler Linux 上安装 PHP

举报
Chocola 发表于 2026/10/14 09:09:23 2026/10/14
【摘要】 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 使用 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-FPM
  • listen = 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 应用来说,这套组合已经足够使用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。