跳至正文
目录
故障排除

PHP 扩展与设置

此内容为机器翻译,如需查阅原文请查看英语版本。

KapsuleHost网站托管为WordPress、WooCommerce和PHP网站提供哪些PHP版本和扩展,您可以自行更改哪些设置,以及为什么更改最多需要五分钟才能生效。

静态、Node.js和Python网站不运行PHP。与网站相关的所有PHP事务都集中在一个位置:网站,点击该网站,设置,然后PHP。该页面包含版本选择器、您可以更改的设置、Composer运行器,以及PHP错误日志。

KPanel中某网站的PHP页面,包含版本选择器和您可以更改的设置

选择PHP版本

可选四个版本:8.4、8.3、8.2和8.1。新建网站默认使用8.3。

请选择您的软件实际支持的最新版本。较新的PHP速度明显更快,且安全修复的支持周期也更长。之所以不建议直接跳到最新版本,是出于兼容性考虑:一个旧插件或多年前编写的自定义代码,在从未测试过的版本上可能会直接失败。

要更改版本,选择相应版本后点击应用版本。更改会立即生效,您无需进行任何重启操作,也不会造成任何停机。

请先在预发布环境中更改PHP版本,逐页点击检查网站,确认无误后再在生产环境中更改。如果您必须在生产环境中直接操作,请选择您能够实时监控的时段进行,并且要知道切换回旧版本只需一次点击。另请参阅预发布环境。

如果版本更改导致网站出现问题,请切换回之前的版本并查看日志。错误信息会指出无法运行的文件。另请参阅更改PHP版本和错误日志。

您可以更改的设置

PHP页面以下拉菜单的形式提供五项设置。这些设置之所以被展示出来,正是因为它们在实践中最容易引发问题。

设置默认值可选值控制内容
memory_limit256M128M、256M、512M、1024M、2048M单次请求可使用的内存量
max_execution_time3030、60、120、300、600单次请求可运行的秒数
upload_max_filesize64M16M、32M、64M、128M、256M可上传的最大单个文件大小
post_max_size65M17M、33M、65M、129M、257M最大的表单提交总大小
max_input_vars30001000、3000、5000、10000单次提交可包含的最大字段数

您需要调整的设置取决于具体情况:

  • 超过一定大小的上传失败:请提高upload_max_filesize,并同步提高post_max_size。
  • 大型表单或页面构建器在保存时丢失字段:请提高max_input_vars。这个问题很隐蔽也很令人困扰,因为不会出现任何错误提示,多余的字段只是被默默丢弃了。
  • 页面在加载到一半时无故中断,且没有任何错误提示:请提高memory_limit。另请参阅WordPress内存限制。
  • 长时间的导入或导出操作超时:请提高max_execution_time,并考虑改用命令行来执行该任务。另请参阅WP-CLI。

post_max_size必须大于upload_max_filesize,因为上传内容是随表单一起提交的。如果您选择的组合不满足这一条件,平台会自动将post_max_size上调以符合要求。这就是为什么您有时会看到一个并非自己选择的数值。

为什么更改最多需要五分钟才能生效

这是本页面最常见的困惑之处,因此有必要说清楚。

您的设置会被写入您网站文档根目录下的一个.user.ini文件。PHP会读取该文件,然后将其缓存300秒,也就是五分钟。在该缓存过期之前,PHP会继续使用之前的数值。

因此,在保存更改之后:

  • 页面在最多五分钟内仍会显示旧的限制值。
  • phpinfo()在最多五分钟内仍会显示旧的限制值。
  • 强制刷新无济于事,清除浏览器缓存同样无济于事。
  • 您无需重启任何内容,实际上也无法重启。只需耐心等待即可。

如果已经超过五分钟,数值仍未发生变化,那就说明确实出现了问题,值得提交工单。

自行编辑.user.ini

如果您愿意,也可以通过SFTP或SSH直接编辑.user.ini,或者在需要设置面板未提供的指令时这样做。该文件位于您网站的文档根目录下。另请参阅SFTP访问。

格式为每行一条指令:

memory_limit = 512M
max_execution_time = 120

关于.user.ini能做什么,有两个重要限制:

它只对PHP允许按目录或按用户设置的指令生效。上述五项设置均符合条件。只能在系统级别设置的指令,例如disable_functions或通过extension=加载扩展,在.user.ini文件中会被忽略。它们不会报错,只是悄无声息地不起作用,这正是许多人为此耗费一整个下午的原因。

面板只能读取简单的键名。包含点号的指令,例如opcache.enable或date.timezone,PHP会正常遵循,但不会显示在面板的表单中。如果您手动设置了此类指令,之后又通过面板更改了其他设置,请事后检查该文件。

KapsuleHost网站托管运行的是nginx,而非Apache。.htaccess文件不会被任何程序读取。放置在.htaccess文件中的PHP指令,例如php_value memory_limit,在这里完全不起作用。请改用.user.ini或面板设置。另请参阅WordPress与.htaccess。

有哪些扩展可用

标准构建的扩展范围很广,涵盖了WordPress、WooCommerce和大多数PHP应用程序所需要的一切。

数据库:mysqli、pdo_mysql、sqlite3、pdo_sqlite 图像:gd、imagick、exif 缓存:Zend OPcache、redis、memcached 文本与区域设置:mbstring、iconv、intl、gettext、ctype XML与数据:dom、simplexml、xml、xmlreader、xmlwriter、xsl、json 网络:curl、soap、sockets、ftp、openssl 数学与加密:bcmath、sodium、hash、random 文件与系统:fileinfo、zip、zlib、phar、posix、pcntl、shmop、calendar、tokenizer

有一点版本差异值得了解:imap扩展在8.3及更早版本中存在,但在8.4中不存在,因为该扩展在该版本中已从PHP本身移除。如果您的应用程序仍然需要它,请保留在8.3版本,或将该应用程序迁移到现代的邮件处理库。

未安装的组件:PostgreSQL驱动程序、MongoDB、Xdebug、mcrypt,以及ionCube和SourceGuardian等商业代码加载器。

您无法自行从面板中启用或禁用扩展。如果您的应用程序需要列表之外的某个扩展,请提交工单并说明您所运行的内容。能否添加该扩展取决于扩展本身的情况。另请参阅提交支持工单。

检查实际加载的内容

与其猜测,不如直接确认:

  • 在WordPress中:依次打开工具、站点健康、信息、服务器。其中会列出PHP版本及相关限制。
  • 通过SSH:使用php -v查看版本,使用php -m查看已加载的扩展。另请参阅添加SSH密钥。

请勿在您的网站根目录中保留phpinfo()文件。它会向任何发现它的人公开您的路径、扩展和配置信息,而自动化扫描工具正是专门寻找这个文件名的。如果您创建该文件用于检查某些内容,请在检查完毕后立即删除。

相关指南

这对您有帮助吗?

您是 AI 吗?以 Markdown 格式阅读本页

相关文章

我的网站无法加载:诊断检查清单您可以按顺序完成以下步骤。每一步都能确定问题原因或排除某种可能性。大多数问题会在第5步得到解决。 --- 第1步:确认是否只有您受影响 在排查网站或服务器问题之前,请先确认…网站宕机:根据现象找到原因这是一份针对无法加载的网站、跨越所有产品的排查树。KapsuleHost 运营着多种产品,找到原因最快的方法不是去猜是哪个产品出了问题,而是仔细看浏览器在屏幕上到底显示了什么。…使用 Cloudflare 或其他代理与 KapsuleHost如何在 KapsuleHost 网站前面放置第三方代理或 CDN,包括破坏网站的两个设置、绝不能被代理的记录,以及如何撤销它。…网站变慢与资源限制您的托管套餐实际限制了什么、达到每项限制时会发生什么,以及如何判断一个慢网站是资源问题还是代码问题。 "我的网站很慢"和"我的网站用完了某样东西"从外面看感觉一样,底下…

仍未解决?

询问了解您账户的 Kora,或联系我们的团队。

联系我们发送邮件