结论:装 Drupal 10 就用 PHP 8.1 及以上(推荐 8.3),装 Drupal 11 必须 PHP 8.3.0 及以上;同时在 php.ini 里打开 GD、cURL、PDO_MySQL、DOM/SimpleXML/XML、mbstring、OpenSSL、Tokenizer、Phar、Session、OPcache 这一组扩展,并把 memory_limit 提到 256M,安装向导的"环境检查"就能一次通过。
Drupal 10 和 Drupal 11 分别要求什么 PHP 版本?
结论:Drupal 10 支持 PHP 8.1/8.2/8.3,Drupal 11 把下限抬到 PHP 8.3.0,低于这个版本连安装程序都不给你进。
选版本时别只看"能跑",还要看安全支持窗口:PHP 8.1 的安全支持在 2025 年 12 月 31 日结束,8.2 到 2026 年 12 月 31 日,8.3 到 2027 年 12 月 31 日。结论:2025 年之后新站直接上 PHP 8.3,可以用到 2027 年底不用升级。另外 Drupal 9 已在 2023 年 11 月 1 日停止支持,老站迁移时顺带把 PHP 也升了。数据库门槛同步确认一下:Drupal 10 要求 MySQL 5.7.8+ / MariaDB 10.3.7+ / PostgreSQL 12+。
必装的 PHP 扩展有哪些?
结论:Drupal 核心硬性要求的扩展是 cURL、Date、DOM、Filter、GD、Hash、JSON、Mbstring、OpenSSL、pcre、PDO、Phar、Session、SimpleXML、SPL、Tokenizer、XML、XMLWriter,外加 MySQL 的 pdo_mysql(或 mysqli)。
其中 Date、SPL、Hash、pcre、JSON 在 PHP 8 里默认内置,不用管;真正容易漏装的是四个:GD(缩略图、图片样式全靠它)、DOM+SimpleXML+XMLWriter(三个通常在同一个 php-xml 包里)、mbstring(多语言站和中文内容必须)、pdo_mysql(连数据库)。结论:80% 的"安装第一步就报错"都是 php-xml 或 pdo_mysql 没装。
OPcache 严格说不是必需,但生产环境必开,能省 20%–50% 的 PHP 执行时间。
服务器上怎么一条命令装齐?
结论:Debian/Ubuntu 系用 apt 装包名带版本号的那套,RHEL/Rocky 系用 dnf,不要一个个模块手动编译。
Ubuntu 22.04/24.04(PHP 8.3):
sudo apt update
sudo apt install -y php8.3-cli php8.3-fpm php8.3-mysql php8.3-gd \
php8.3-xml php8.3-mbstring php8.3-curl php8.3-opcache php8.3-zip
Rocky/AlmaLinux(用 Remi 源指定 8.3):
sudo dnf install -y php-cli php-fpm php-mysqlnd php-gd php-xml \
php-mbstring php-curl php-opcache php-json php-zip
注意 php8.3-xml 这一个包就包含 dom、simplexml、xml、xmlwriter、xmlreader,装了它 XML 那组要求全部满足。改完配置重启:sudo systemctl restart php8.3-fpm。
如果你用 DDEV 或 Lando 这类本地环境,直接 ddev config --php-version=8.3 就行,官方镜像里必需扩展全都装好了,需要额外扩展时在 .ddev/config.yaml 里加 webimage_extra_packages。
php.ini 里必须改哪几个参数?
结论:必改的是 memory_limit、date.timezone、上传大小三项,生产环境再加 OPcache 参数。文件位置:Debian/Ubuntu 是 /etc/php/8.3/fpm/php.ini,RHEL 系是 /etc/php.ini。
memory_limit = 256M ; 导入大内容或跑 Composer 时建议 512M
max_execution_time = 120
post_max_size = 64M
upload_max_filesize = 32M ; 必须小于 post_max_size
date.timezone = Asia/Shanghai
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 20000
opcache.revalidate_freq = 0 ; 开发环境 0,生产环境 2
date.timezone 不设会在安装日志里刷一堆警告,也是很多"安装莫名中断"的元凶。
怎么验证配置是否合格?
结论:命令行跑三条检查,再让 Drupal 自己复核一次,最稳。
第一,php -v 确认版本号;第二,php -m 对照上文清单看扩展是否齐全;第三,php -r "echo ini_get('memory_limit');" 确认内存值已生效(FPM 和 CLI 读的是不同 ini 文件,别只改一个)。
装完 Drupal 后访问 /admin/reports/status,或执行 drush core:requirements,状态报告会逐条列出缺失的扩展和偏低的参数。用 composer create-project drupal/recommended-project my_site 建站时,Composer 的 platform check 也会提前拦住版本不匹配的情况。
总结一句:先定版本(Drupal 10 → PHP 8.1+,Drupal 11 → PHP 8.3+),再补扩展(GD、xml 全家桶、mbstring、pdo_mysql 是漏装重灾区),最后调 php.ini 的内存、时区和 OPcache,这三步做完,Drupal 安装基本不会卡在环境检查上。