Fork me on GitHub

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访问
image

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

image

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
image
make
image

配置手动安装的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 "======================================"
posted @ 2025-11-17 16:10  秋夜雨巷  阅读(13)  评论(0)    收藏  举报