PHP
PHP(PHP: Hypertext Preprocessor)是互联网上一种流行的编程语言。PHP 将动态内容(例如 WordPress 中的内容)转换为 Web 浏览器可以读取的 HTML、CSS 和 JavaScript。WordPress 主要由 PHP 编写,服务器必须安装 PHP 才能运行 WordPress。
由于 PHP 是一种解释型语言,其版本和配置对 WordPress 能否顺利运行以及运行效果有重大影响。
版本
在可能的情况下,应使用 PHP 7.4 或更高版本来运行 WordPress。截至本文档撰写之时,PHP 7.4 是 WordPress 官方支持的版本,而 PHP 8.0 和 8.1 属于“兼容但有例外”,PHP 8.2 处于“测试版支持”状态。PHP 8 是唯一仍在接受积极开发和支持的主要版本。PHP 组定期停止对旧版本的 PHP 提供支持,且旧版本无法保证会针对安全问题进行更新。
与此同时,新版本的 PHP 包含安全性和性能改进,并附带新功能和问题修复,但这些更改并不保证向后兼容。然而,在升级 PHP 版本时必须格外小心。虽然 WordPress 与最新发布的 PHP 版本兼容,但由于其包含的插件和主题,为旧版 PHP 构建的网站可能不兼容。
如果无法立即升级到 PHP 8,应尽快升级到 PHP 7.4。虽然 WordPress 可能能在旧版 PHP 上运行,但这些版本已达到官方生命周期结束(End Of Life),运行过时的 PHP 安装可能会使您的网站面临安全漏洞。
您可以在 PHP 兼容性与 WordPress 版本 页面找到与您的 WordPress 版本兼容的 PHP 版本信息。
有关 PHP 支持版本的更多信息,始终可以在 PHP 官方支持版本页面 上找到。
升级 PHP 时,在升级前测试网站的兼容性是一种良好的做法。如果您提供多个环境(例如测试环境和生产环境),则应分别为每个环境配置 PHP 版本。这将使用户能够在非生产环境中测试新版 PHP,并在生产环境中升级 PHP 版本之前解决任何问题。
有一个有用的 WP-CLI 命令 可用于执行通用兼容性检查,但请注意它并非 100% 准确。
配置
PHP 主要通过配置文件 php.ini 进行配置,PHP 在运行时从中读取所有设置和配置。这通常通过 CGI/FastCGI 或像 PHP-FPM 这样的进程管理器实现。
某些服务器环境允许使用其他文件(如 .htaccess 或 .user.ini)来自定义 PHP 配置。
您可以在 官方 PHP 文档 中查看这些指令的详细信息。
超时设置
系统中有多种超时设置,用于限制请求的不同方面。在配置超时设置时,选择相互协调的值非常重要。例如,如果 Web 服务器(如 Apache)的超时时间低于 PHP 服务的脚本执行超时时间,那么设置极高的脚本执行超时就没有意义——在这种情况下,如果请求耗时过长,无论您的 PHP 超时设置如何,Web 服务器都会终止该请求。
请注意,进程所需的时间取决于服务器负载,这些限制是为了确保服务器正常运行而设置的。如果您的服务器负载很高,进程可能需要更长时间才能完成,从而导致级联效应,进而导致更高的服务器负载。因此,需要在为脚本编译提供足够时间和确保处于正常服务器负载之间取得平衡。
主要 PHP 超时可以通过 max_execution_time php.ini 指令设置。此设置限制代码执行,但不包括系统库调用或 MySQL 查询(Windows 除外),在 Windows 上它确实会限制这些操作。
从 Web 服务器传输到 PHP 的数据允许的最大时间由 max_input_time php.ini 指令指定。它通常用于限制上传文件所允许的时间量。需要注意的是,此时间与 max_execution_time 是独立的,并定义了从 Web 服务器调用 PHP 到执行开始之间的时间间隔。
请注意,这些超时设置通常是按服务器配置的,如果您使用的是共享主机账户,则无法对其进行修改。最好的方法是联系您的托管公司技术支持,看看是否可以将其修改以满足您的需求。
内存限制
PHP 每页渲染允许使用的最大内存量由 memory_limit php.ini 指令指定。
除了在 PHP 中设置内存限制外,WordPress 还有两个可以在 wp-config.php 文件中更改的内存配置常量。如果 WordPress 有权这样做,它将把 PHP memory_limit 提升到这些值;但如果 php.ini 指定了更高的数值,WordPress 不会降低允许的量。
WP_MEMORY_LIMIT 选项声明 WordPress 应为渲染网站前端请求的内存量。WordPress 默认值为 40 MB,WordPress MultiSite 默认值为 64 MB。
define( 'WP_MEMORY_LIMIT', '128M' );
WP_MAX_MEMORY_LIMIT 选项声明 WordPress 应为渲染网站后端请求的内存量。WordPress 默认值为 256 MB。
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
由于 WordPress 后端通常需要更多内存,因此有一个单独的设置用于指定该数量,可为已登录用户设置。这主要用于媒体上传。您可以将其设置为高于前端限制的值,以确保后端拥有所需的所有资源。通常,WP_MEMORY_LIMIT <= WP_MAX_MEMORY_LIMIT。
文件上传大小
当使用 WordPress 管理后台上传媒体文件和其他内容到 WordPress 时,WordPress 会使用 PHP 处理这些上传。PHP 的配置包括对可通过 PHP 上传的文件大小限制以及对可发送到 Web 服务器进行处理的数据包大小限制。这些限制需要与上述服务器超时设置保持一致。
单个文件上传的大小限制可以通过 upload_max_filesize php.ini 指令配置。
从 Web 服务器发送到 PHP 进行处理的数据包总大小限制可以通过 post_max_size php.ini 指令配置。post_max_size 的值必须大于或等于 upload_max_filesize 的值。PHP 不会处理大小超过 post_max_size 值的请求。
请注意,post_max_size 适用于每个 PHP 请求,而不仅仅是上传,因此如果站点处理与请求一起包含的大量其他数据,可能需要单独解决此问题。
请记住,在共享主机账户上,这些限制通常是在服务器级别设置的,您可能无法对其进行修改或将其增加到超过某个值。此外,不同的设置有不同的方法来修改上述值。如需就此事项获得额外帮助,请联系您的托管公司技术支持。
替换 WordPress 的 Cron 触发器
wp-cron.php 脚本负责安排和执行某些任务的自动执行。每当有人访问您的网站时,wp-cron.php 都会检查是否到了执行任务的时间。尽管这些检查很小且很快,但它们会消耗时间并产生负载。因此,值得考虑设置 DISABLE_WP_CRON 常量 并使用替代方法来触发 WordPress 的 cron 系统。然而请注意,WordPress cron 系统是出于性能考虑而设计的,运行所需的资源极少,因此除非您确实需要,否则不必替换它。