WordPress 2MB 内存限制无处不在

Posted

技术标签:

【中文标题】WordPress 2MB 内存限制无处不在【英文标题】:WordPress 2MB memory limit coming from nowhere 【发布时间】:2018-05-02 16:24:45 【问题描述】:

我刚刚将一个全新的 WordPress 下载到了一个 WP 和 MediaWiki 已经顺利运行的虚拟服务器上。 php.ini 中的 memory_limit 设置为 256MB。但出于某种原因,WP 认为它仅限于 2MB,请参阅下面的 Apache 日志条目。

[Sun Nov 19 08:50:21.692866 2017] [:error] [pid 74814] [client 109.81.213.117:59968]
PHP Fatal error:  Allowed memory size of 2097152 bytes exhausted (tried to allocate
131072 bytes) in /var/www/foo.bar/subdomain/wp-includes/capabilities.php on line 452

当我从我的新 WP 的 index.php 文件中打印 phpinfo() 时,它显示了 256MB 的限制,因此这个子域或目录没有第二个秘密 php.ini 配置。

我还尝试在 .htaccess 或 php 文件中找到内存限制的恶作剧设置,但无济于事。 (grep -r "memory_limit" .)

这个 2MB 的限制可能来自哪里?

更新

我将ini_get('memory_limit'); exit; 放在 wp-settings.php 的中间,其中包含其他文件。有时它会按预期写入256MB,有时它会在/var/www/iurium.cz/daily/wp-includes/wp-db.php 中死去,错误为2MB。这种行为非常随机。

如果不是 htaccess、php.ini 或 ini_set,还有什么会影响内存限制?它与PHP有关系吗?可以在系统中设置吗?

【问题讨论】:

在第 452 行之前执行 phpinfo()(如果经常发生这种情况)以及 ini_get()。此外,如果您更新了 ini 文件并使用 php-fpm 或类似的东西,处理该请求的进程可能没有重新读取 ini 文件(pid 编号应该与您的 phpinfo() 相同-称呼)。还要记住,phpinfo 显示两个值,一个是全局的,一个是本地的。 .htaccess 文件还是 wp-config.php? 你有想过这个吗? @ClaytonLeis 没有解决方案,我们划掉了项目... 【参考方案1】:

确保您的 memory_limit 值为 256M(而不是 256MB)。

资源限制的PHP描述调用256Mhttps://www.php.net/manual/en/ini.core.php#ini.memory-limit

您可以使用phpinfo()ini_get('memory_limit') 来检查该值。

如果memory_limit 与预期格式不匹配,PHP 将默认为2M2097152 字节)

【讨论】:

我喜欢你的建议,不幸的是我无法验证它,因为项目被划伤了。还是谢谢! 我遇到了同样的问题... 128MB 而不是 128M【参考方案2】:

遇到同样的问题。不知道是什么原因造成的。通过使用@ini_set('memory_limit', '512M'); 来缓解它 在 wp-config.php 中

某些插件(或主题文件)正在某处更改 memory_limit。

【讨论】:

以上是关于WordPress 2MB 内存限制无处不在的主要内容,如果未能解决你的问题,请参考以下文章

PHP WordPress:增加wp-config.php中的服务器内存限制

CentOS 5.x和CentOS 6.x限制单个用户线程数上限的不同行为

Firebase 的 Cloud Functions 因超出内存限制而被终止

Wordpress php.ini 文件设置 upload_max_filesize 以获取大约 2MB 上传

OpenCL 中的私有内存是不是有最大限制?

Android内存优化-2-OOM研究