PHP 要求
某些单独的模块可能对 PHP 扩展和配置有特殊要求,除了以下列出的内容外,因此请务必查阅该模块的文档。
支持的 PHP 版本
PHP 版本 | Drupal 支持 | Drupal 推荐 |
---|---|---|
5.5 | ![]() |
![]() |
5.6 | ![]() |
![]() |
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 | ![]() |
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,默认值),否则注释将不会被保存或加载。