某些单独的模块可能对PHP扩展和配置有特定要求,除此之外,请查看模块的文档。
支持PHP版本
PHP版本 | Drupal支持 | 推荐用于Drupal |
---|---|---|
5.5 | 5.5.9+,直到Drupal 8.7.0(下面的注释2) | 没有 |
5.6 | 是的,直到Drupal 8.7.0(下面的注释2) | 没有 |
7 | 是的,Drupal 8.7.0的7.0.8(下面的注释2) | 没有 |
7.1 | 是 | 没有 |
7.2 | 是的,从Drupal 8.5.0开始 | 是 |
7.3 | 是的,从Drupal 8.6.4开始(下面的注1) | 是 |
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年底之前达到使用寿命。(有关 更多信息,请参阅PHP:支持的版本。)Drupal 8将于2019年3月6日放弃对PHP 5.5和5.6的支持。我们建议至少更新到PHP 7.2。
为什么PHP 5支持被删除?
- 为了尽量减少Drupal用户和Drupal开发人员的中断,Drupal 8对PHP 5.5和PHP 5.6的支持将同时结束。
- PHP 5.6不再接受主动支持,这意味着一些影响Drupal 8的错误将不再被修复。
- 许多Drupal 8依赖项已经放弃了对这些旧版本PHP的支持,这可能会干扰这些依赖项的安全更新。
- 大多数Web主机已经支持PHP 7.(您可以在我们的PHP 7托管问题的跟踪问题上报告有关特定主机的信息)。
何时支持删除PHP 7.0?
- 对PHP 7.0的支持将持续到2019年3月6日。我们将在安排PHP 7.0支持结束后立即发布公告。
- 我们将考虑的因素包括PHP 7.1+的主机和Drupal 8依赖支持。通过报告您的主机是否支持PHP 7.1或7.2来帮助我们。
- 我们建议Ubuntu LTS用户计划更新到Ubuntu 18.04(将于2018年4月发布)而不是Ubuntu 16.04以获得最佳的未来兼容性。
这会影响Drupal 7吗?
没有.Drupal 7仍然与PHP 5.2.4及更高版本兼容。如果发生变化,将另行发布公告。
PHP配置设置
内存要求
PHP内存要求可能会有很大差异,具体取决于您网站上使用的模块。所需的最小内存大小为64MB。
如果PHP配置不符合这些要求,将显示警告消息。但是,虽然这些值可能足以用于默认的Drupal安装,但启用了许多常用模块的生产站点可能需要更多内存。通常在生产系统中找到128 MB或256 MB。某些安装可能需要更多,特别是对于富媒体实现。如果您使用的是托管服务,请务必验证您的主机是否可以为您正在部署或将来部署的模块集提供足够的内存。(有关修改PHP内存限制的其他信息,请参阅“ 故障排除常见问题解答”中的“ 增加PHP内存限制”页面。)
扩展
注意:至少在Linux(和Mac)上添加PHP扩展到系统意味着使用包管理器查找和安装相关的PHP包。通常,Foo扩展名的包名称为“php-foo”或“php7-foo”,但情况并非总是如此。
['date', 'dom', 'filter', 'gd', 'hash', 'json', 'pcre', 'pdo', 'session', 'SimpleXML', 'SPL', 'tokenizer', 'xml']
数据库扩展#
必须激活Drupal 8 的 PHP数据对象(PDO)扩展才能正确安装和运行。PECL版本的PDO与Drupal 8不兼容,无法使用。此外,必须安装并启用用于连接到所选数据库的PHP扩展。
Drupal目前支持的数据库连接器是:mysql(最初的MySQL扩展),mysqli(用于较新MySQL安装的改进连接器)和pgsql(用于PostgreSQL)。注意:默认情况下,PHP 5.x不再启用mysql扩展。请阅读上面的链接,以便安装和启用您选择的连接器。通常,如果您安装支持MySQL的PDO,则已经为您选择了正确的连接器。
XML扩展#
PHP XML扩展(适用于Blog API,Drupal和Ping模块)。默认情况下,在标准PHP安装中启用此扩展; Windows版本的PHP内置支持此扩展。启用XML扩展还可以启用PHP DOM。DOM现在是系统要求。
图片库#
图像处理需要用于PHP的图像库(例如GD库)(调整用户图片,图像和图像缓存模块的大小)。GD包含在PHP 4.3及更高版本中,通常默认启用。GD是Drupal 7及更高版本中的必需扩展。在Drupal核心中,ImageMagick也支持基本的图像处理,但贡献的模块支持更少。
OpenSSL #
建议使用PHP OpenSSL扩展,以允许Drupal使用HTTPS发出传出请求。一些平台提供单独的OpenSSL包,例如php7-openssl。
还有正在进行的工作使Drupal核心的Update Manager模块使用HTTPS检查更新,这将使这更加强烈推荐或可能需要。请参阅核心问题1538118和https://groups.drupal.org/node/506128。
JSON #
Drupal 8需要使用JSON编译的PHP。JSON支持通常是作为PHP核心的一部分编译的,但是如果您遇到错误,例如尝试添加JSON扩展。PHP Fatal error: Call to undefined function Drupal\\Component\\Serialization\\json_encode() in ... core/lib/Drupal/Component/Serialization/Json.php
cURL #
的PHP卷曲扩展需要在Drupal 8,以及聚合器和一些贡献的模块的模块SimpleTest的。许多Linux发行版和开发堆栈默认情况下都会启用它,但是如果您的系统没有在php.ini中启用它(通常在Windows上)或使用您的包管理器(通常在Linux上)安装它。
Mbstring #
在PHP mbstring的 扩展提供了用于Drupal安装其他语言,除了英语多字节特定字符串函数,也Drupal的多语言网站。它有助于处理PHP中的多字节编码,还可以处理基于Unicode的编码,如UTF-8或UCS-2。
Twig C扩展
此扩展仅在您仍在使用PHP 5时才有用。没有PHP 7版本。
Drupal 8现在使用Twig作为默认的PHP模板引擎。虽然Twig作为Drupal核心的一部分包含在内,但可以选择编译部分并将其作为PHP扩展包含在内以改进性能渲染模板。您网站上的状态报告有一个部分,用于指示是否已加载Twig C扩展程序。使用这些说明下载并编译Twig C扩展的最新稳定源代码。
其他
.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
原因:使用默认的max_nesting_level为100(在xdebug版本<2.3中)会导致某些页面崩溃。
来自不同来源的PHP
Drupal旨在与php.net上分发的PHP一起使用。我们尽一切努力使其与其他来源的PHP版本一起使用,但这只是在尽力而为的基础上完成的。特别是,已知suhosin会破坏某些特征; 并且一些操作系统将核心组件移动到其他包中。
PHP要求详情
请参阅Drupal.org上的phpinfo()页面,了解如何使用phpinfo获取系统的详细信息。例如,phpinfo将告诉您是否已安装数据库以及您的系统正在运行的PHP,MySQL等版本。Phpinfo还会告诉你PHP变量的设置以及许多其他有用的东西。
通常可以更新到Linux发行版附带的较新版本的PHP。请阅读Linux发行版的文档。
一些值得注意的要点
- 请注意32位PHP的局限性。
- Drupal基于Composer的依赖项使用PHP 5.5.9打包。如果您使用的是更高版本的PHP,则可以通过发出
composer update
命令来获得更合适的基于Composer的依赖项版本。 - 如果服务器上安装了所需的库,Drupal 8 Update管理器可以通过SSH安装/更新模块和主题。(在Debian上,包名为“libssh2-php”。)
- 如果在Drupal 8中使用APC操作码缓存,则需要APC 3.1.13或更高版本。PHP 5.5内置了Zend操作码缓存(Opcache)。
-
如果PHP 5.5+原生opcache启用,设置和必须启用(设置为1),否则注释将不被保存/加载。
opcache.save_comments
opcache.load_comments
评论