作者:成都长风云Drupal开发团队
正值Drupal10成熟使用、Drupal11正式发布阶段,成都长风云Drupal开发团队总结了Drupal10和Drupal11的运行环境需求,方便Drupal爱好者学习研究,为Drupal在国内的发展近一些绵薄之力。我们详细总结了Drupal11的web服务器要求、Drupal11的PHP环境要求、Drupal11的内存要求、Drupal11的composer要求、Drupal11的数据库版本要求等,请查看成都长风云Drupal开发团队官网的Drupal技术分享栏目。本文详细叙述了Drupal11运行所需的PHP要求。
一些单独的模块可能对PHP扩展和配置有特定的要求,不一定使用下面的要求,也就是有可能要求更“苛刻”。因此,请同时查看该模块的文档。
一、Drupal10.1、Drupal10.2、Drupal10.3、Drupal11支持的PHP版本
1、Drupal 11支持PHP版本意味着什么?PHP安装“太旧”意味着什么?
只要使用支持的PHP版本,Drupal 11次要版本就会收到预定义的安全覆盖窗口(通常为12个月)。
我们更倾向于允许Drupal 11网站接收安全更新,即使它们使用的PHP版本不再受支持。然而,Drupal的上游依赖可能会在Drupal主版本生命周期结束之前放弃对旧PHP版本的支持。如果发生这种情况,Drupal网站将无法再为该依赖项安装安全更新,因此我们无法再保证其安全覆盖范围。
如果网站的PHP版本太旧,以至于依赖关系可能会放弃对它的支持,那么网站所有者将在他们的网站状态报告中收到警告,称他们的PHP安装“太旧”。
如果某个依赖项确实放弃了对Drupal主版本最初支持的PHP版本的支持,则可能会创建一个不定期的次要版本,以要求新的PHP和依赖项版本。例如,Drupal 9.0.0支持PHP 7.3,因此,如果Drupal 9依赖项在2023年11月Drupal 9的生命周期结束之前停止支持PHP 7.3的话,我们可能会在正常计划之外创建一个新的次要版本,将PHP版本要求提高到7.4,并将依赖项的版本要求提高至支持的版本。
2、Drupal中,“推荐”一个PHP版本意味着什么?
Drupal将在所有支持的PHP版本上运行。推荐的PHP版本是构建Drupal网站的最佳选择,因为它们将得到更长时间的支持。
二、Drupal11需要PHP扩展
Drupal核心使用的扩展在core的composer.json文件中定义,例如Drupal 11.x的文件。查看“require”部分和以“ext-”开头的键。
注意:至少在Linux(和Mac)上,向系统添加PHP扩展意味着使用包管理器查找并安装相关的PHP包。通常,Foo扩展的包名为“php-Foo”或“php83-Foo”,但情况并非总是如此。一些扩展是核心PHP包的一部分,因此默认情况下是启用的。
1、数据库扩展
Drupal 9及更高版本必须激活PHP数据对象(PDO)扩展才能正确安装和运行。PDO的PECL版本与Drupal 9不兼容,无法使用。此外,必须安装并启用用于连接到所选数据库的PHP扩展。
Drupal目前支持的数据库连接器是SQLite、mysql(mysql的原始扩展)、mysqli(用于较新mysql安装的改进连接器)和pgsql(用于PostgreSQL)。
2、XML扩展名
PHP XML扩展(用于博客API、Drupal和Ping模块)。默认情况下,在标准PHP安装中启用此扩展;Windows版本的PHP内置了对此扩展的支持。启用XML扩展还可以启用PHP DOM。DOM现在是一个系统要求。
3、图像库
在Drupal 9及更高版本中,GD库等PHP图像库是必需的扩展,并且是图像操作(调整用户图片大小、图像和图像缓存模块)所必需的。Drupal核心中也支持ImageMagick进行基本的图像操作,但贡献模块的支持要少得多。
4、OpenSSL
建议使用PHP OpenSSL扩展,以允许Drupal使用HTTPS发出传出请求,并且在使用更新管理器时是必需的。阅读PHP OpenSSL要求以获取更多信息。
5、JSON
Drupal 9及更高版本需要使用JSON编译的PHP。JSON支持通常作为PHP核心的一部分进行编译,但如果你遇到像PHP致命错误这样的错误:在…中调用未定义的函数Drupal\\Component \\Serialization \\JSON_encode()。。。core/lib/DDrupal/组件/序列化/Json.php尝试添加Json扩展名。
6、cURL
Drupal 9及更高版本的自动化测试以及聚合器和一些贡献模块都需要PHP cURL扩展。许多Linux发行版和开发堆栈默认情况下都会启用它,但如果您的系统既没有在php.ini中启用它(通常在Windows上),也没有使用包管理器安装它(通常是在Linux上)。
7、Mbstring
PHP mbstring扩展提供了用于Drupal安装的多字节特定字符串函数,适用于除英语以外的其他语言,以及Drupal中的多语言站点。它有助于处理PHP中的多字节编码,也可以处理基于Unicode的编码,如UTF-8或UCS-2。
三、Drupal11需要的PHP配置设置
1、内存要求
PHP内存要求可能因您网站上使用的模块而异。所需的最小内存大小为64MB。
如果PHP配置不符合这些要求,将显示警告消息。然而,虽然这些值可能足以用于默认的Drupal安装,但启用了许多常用模块的生产站点可能需要更多的内存。通常在生产系统中可以找到128 MB或256 MB。有些安装可能需要更多,特别是在媒体丰富的实现中。如果您正在使用托管服务,重要的是要验证您的主机是否可以为您正在部署或将来可能部署的模块集提供足够的内存。(有关修改PHP内存限制的更多信息,请参阅疑难解答常见问题中的增加PHP内存限制页面。)
2、.htaccess设置
一些内存设置包含在Drupal附带的默认.htaccess文件中,因此您不需要显式设置它们。但是请注意,从.htaccess设置PHP配置选项仅在以下条件下有效:
使用Apache(或兼容的Web服务器)
如果实际读取了.htaccess文件,即启用了Apache主配置(通常是httpd.conf)中的AllowOverride All
如果PHP作为Apache模块安装
在某些共享主机环境中,对这些设置的访问受到限制。如果您无法自己进行这些更改,请要求您的托管服务提供商为您进行调整。
3、其他接口
有关如何更改PHP其他接口的配置设置,请参阅PHP手册。
4、Xdebug
如果使用Xdebug:
设置:xdebug.show_exception_trace=0
原因:可能会导致Drupal的安装程序崩溃。
在Drupal 9中使用Xdebug:
设置:xdebug.collect_params=?
原因:将xdebug.collect_params设置得太高会妨碍Drupal 9的安装和正常工作。
设置:xdebug.max_nesting_level=256
原因:使用默认的max_nesting_level 100(在xdebug版本<2.3中)会导致某些页面崩溃。
注意:从3.0版起,xdebug.collect_params已被删除。参数现在总是可见的,包括变量内容和参数名称
不同来源的PHP
Drupal旨在与PHP.net上分发的PHP一起工作。我们尽一切努力使其与其他来源的PHP版本兼容,但这只是在尽最大努力的基础上完成的。特别是,众所周知,苏赫辛会破坏某些特征;一些操作系统将核心组件移动到其他包中。
四、PHP需求详细信息
请参阅Drupal.org上的phpinfo()页面,了解如何使用phpinfo获取系统的详细信息。例如,Phpinfo会告诉你是否已经安装了数据库,以及你的系统正在运行什么版本的PHP、MySQL等。Phpinfo还将告诉您设置了哪些PHP变量以及许多其他有用的东西。
通常可以更新到Linux发行版附带的较新版本的PHP。请阅读Linux发行版的文档。
一些值得注意的点
请注意32位PHP的局限性。
如果服务器上安装了所需的库,Drupal 9更新管理器可以通过SSH安装/更新模块和主题。(在Debian上,该软件包名为“libssh2-php”。)
如果启用了本机opcache,则必须启用设置opache.save_comments(默认设置为1),否则将不会保存/加载注释。