logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
07/10/2025, by Ivan

某些单独的模块可能对 PHP 扩展和配置有特殊要求,除了以下列出的内容外,因此请务必查阅该模块的文档。

支持的 PHP 版本

PHP 版本 Drupal 支持 Drupal 推荐
5.5  否(见下方注释 2)  否
5.6  否(见下方注释 2)  否
7.0 是,从 Drupal 8.7.0 的 7.0.8 开始(见下方注释 2)  否
7.1  否
7.2 是,从 Drupal 8.5.0 开始  是
7.3 是,从 Drupal 8.6.4 开始(见下方注释 1)  是
7.4 是,从 Drupal 8.8.3 开始  是
8.0  否;请参阅任务 3109885

1)请阅读 变更说明,了解有关 PHP 7.3 支持的更多信息。
2)请阅读 变更说明,了解有关停止支持 PHP 5 的更多信息。

“推荐的” PHP 版本是什么意思?

Drupal 可以在所有受支持的 PHP 版本上运行。推荐的 PHP 版本是构建 Drupal 网站的最佳选择,因为它们的支持时间更长。PHP 7 还带来了显著的性能和缓存改进。

PHP 5.5、5.6 和 7.0 在 2018 年底正式结束生命周期,PHP 7.1 于 2019 年 12 月 1 日结束支持。(请参阅 PHP 官方的 支持版本 页面了解更多信息。)Drupal 8 在 2019 年 5 月停止了对 PHP 5.5 和 5.6 的支持,新版本至少需要 PHP 7.0.8 或更高版本。我们建议至少升级到 PHP 7.2。(Ubuntu 18.04 附带 PHP 7.2,而 Debian 稳定版为 7.3。)

注意:这不影响 Drupal 7,它仍兼容 PHP 5.2.4 及以上版本。如果有任何变化,将会发布单独的公告——请参阅 Drupal 7 PHP 要求

必需的 PHP 扩展

Drupal 核心使用的扩展在 Core 的 composer.json 文件中定义——例如,参见 Drupal 8.7.x 的文件。查看 “require” 部分和以 “ext-” 开头的键。

注意:在 Linux(和 Mac)系统中安装 PHP 扩展通常意味着使用包管理器安装相应的 PHP 包。通常扩展 Foo 的包名为 “php-foo” 或 “php7-foo”,但并非总是如此。有些扩展是 PHP 核心的一部分,因此默认已启用。

数据库扩展

PHP 数据对象(PDO) 扩展必须启用才能正确安装和运行 Drupal 8。来自 PECL 的 PDO 版本与 Drupal 8 不兼容,不能使用。此外,还必须安装并启用连接到所选数据库的 PHP 扩展。

当前 Drupal 支持的数据库连接器包括:mysql(原始 MySQL 扩展)、mysqli(改进版 MySQL 连接器,用于较新版本安装)和 pgsql(用于 PostgreSQL)。注意:PHP 5.x 默认不再包含 mysql 扩展。请阅读上面的链接以了解如何安装并启用所选的连接器。一般来说,如果您安装了带 MySQL 支持的 PDO,则已为您选择正确的连接器。

XML 扩展

PHP XML 扩展(用于博客 API、Drupal 模块和 Ping)。该扩展在标准 PHP 安装中默认启用;Windows 版本的 PHP 也内置了该扩展。启用 XML 扩展还会启用 PHP DOM,而 DOM 是系统级要求。

图像处理库

PHP 的图像库(如 GD)是 Drupal 8 的必需扩展,用于图像处理(调整大小、图像模块和图像缓存)。ImageMagick 也受 Drupal 核心支持,可用于基本图像操作,但附加模块的支持较少。

OpenSSL

PHP OpenSSL 扩展建议启用,以便 Drupal 可以通过 HTTPS 发出外部请求。一些平台提供单独的 OpenSSL 包,例如 php7-OpenSSL。

目前正在推进工作,以便 Drupal 的更新管理器(Update Manager)模块在检查更新时使用 HTTPS,从而使此建议更为严格或强制。参见任务 #1538118: 更新状态未验证发布历史 URL 的身份或真实性https://groups.drupal.org/node/506128

JSON

Drupal 8 需要带有 JSON 支持的 PHP。JSON 支持通常内置在 PHP 核心中,但如果出现如下错误:

PHP Fatal error: Call to undefined function Drupal\\Component\\Serialization\\json_encode() in ... core/lib/Drupal/Component/Serialization/Json.php 

请尝试添加 JSON 扩展

cURL

PHP cURL 扩展是 Drupal 8 的 SimpleTest 模块以及 Aggregator 和某些附加模块所必需的。在许多 Linux 发行版和开发堆栈中默认启用,但如果系统未在 php.ini(通常是 Windows)中启用,或未通过包管理器(通常是 Linux)安装,则需要手动启用。

Mbstring

PHP mbstring 扩展提供了多字节字符串函数,用于在安装非英文版本的 Drupal 及多语言网站时。它可帮助 PHP 正确处理多字节编码,并支持基于 Unicode 的编码,如 UTF-8 或 UCS-2。

PHP 配置设置

内存要求

PHP 的内存需求取决于网站所使用的模块。最低内存需求为 64 MB

如果 PHP 配置未满足这些要求,将显示警告信息。然而,尽管这些值足以用于默认的 Drupal 安装,但生产网站通常需要更多内存,尤其是启用了多个常用模块时。生产环境中常见的配置为 128 MB 或 256 MB。某些多媒体网站可能需要更多。如果您使用虚拟主机,请确保您的主机能为您启用的模块提供足够的内存,或未来可以扩展。(参见 PHP 内存限制调整 页面,了解更多信息。)

.htaccess 设置

某些内存参数在 Drupal 自带的 .htaccess 文件中已默认设置,因此无需手动配置。但请注意,从 .htaccess 设置 PHP 配置参数仅在以下条件下有效:

使用 Apache(或兼容 Web 服务器)
如果 .htaccess 文件被读取,即 Apache 主配置文件(通常为 httpd.conf)中启用了 AllowOverride All
且 PHP 安装为 Apache 模块。
在某些共享主机环境中,访问这些设置可能受到限制。如果您无法自行修改,请联系您的主机提供商协助设置。

其他接口

请参阅 PHP 官方手册,了解如何为其他 PHP 接口更改配置设置。

Xdebug

如果您使用 Xdebug:

设置:xdebug.show_exception_trace = 0
原因:可能导致 Drupal 安装程序崩溃。

使用 Xdebug 与 Drupal 8:

设置:xdebug.collect_params = ?
原因:xdebug.collect_params 的值过高会阻止 Drupal 8 安装和运行。

设置:xdebug.max_nesting_level = 256
原因:默认值 100(xdebug 版本 < 2.3)可能导致部分页面加载失败。

来自不同来源的 PHP

Drupal 旨在与 PHP.net 提供的 PHP 一起工作。我们尽力使其与来自其他来源的 PHP 版本兼容,但仅在尽最大努力的基础上实现。特别是,已知 Suhosin 会破坏某些功能;某些操作系统还会将核心组件拆分到其他包中。

PHP 要求的详细信息

请参阅 Drupal.org 上的 phpinfo() 页面,了解如何使用 Phpinfo 获取系统的详细信息。例如,Phpinfo 会告诉您系统上是否已安装数据库,以及 PHP、MySQL 等的版本信息。它还会显示已启用的 PHP 变量及其他有用信息。

在许多情况下,您可以升级到 Linux 发行版中提供的更新版本 PHP。请查阅您使用的 Linux 发行版的相关文档。

注意事项

请注意 32 位 PHP 的限制
基于 Composer 的 Drupal 依赖项是使用 PHP 5.5.9 打包的。如果您使用更高版本的 PHP,可以运行 Composer 更新命令以获取更合适的依赖版本。
Drupal 8 的更新管理器(Update Manager)可以通过 SSH 安装 / 更新模块和主题,只要服务器上安装了必要的库。(在 Debian 中,该包名为 “libssh2-php”。)
如果使用 APC 操作码缓存与 Drupal 8 一起运行,则需要 APC 3.1.13 或更高版本。
如果启用了内置的 opcache,则必须启用 opcache.save_comments(值为 1,默认值),否则注释将不会被保存或加载。