【问题标题】:Can't add new posts in Wordpress: memory error无法在 Wordpress 中添加新帖子:内存错误
【发布时间】:2013-07-31 01:26:20
【问题描述】:

在我的 Wordpress 安装中,自从更新到最新版本 3.5.2 后,我目前无法添加新帖子。点击 Post > Add New 显示以下错误:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 491520 bytes) in /var/www/www.mysite.com/wp-admin/edit-form-advanced.php on line 306

出于测试目的,我在禁用所有插件的情况下运行了默认模板(21 个)。

我已将 php.ini、wp-config.php 和 default-constants.php 中的内存增加到 512M,但我似乎仍然无法克服这个错误(这似乎只显示了256M)。

仅供参考....数据库不是新的 - 它有超过一千个帖子。此问题仅发生在某些管理员用户身上,其他人可以看到 发布 > 添加新 屏幕,但仍会在管理区域的其他页面上看到内存问题。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 您是否编辑了正确的php.ini?你用的是 Apache 还是 fast-cgi,还是 suhosin 补丁?
  • 使用 nginx... 我确定我编辑了正确的 php.ini 只是因为在使用 php_info() 重新启动后确认并且它显示正确分配了 512MB。不过谢谢……这是我反复检查的事情。
  • 只是检查。你确实重启了 nginx 和 fast_cgi 服务吧?
  • 另外,由于您使用的是 nginx,您是否也会碰巧使用 php-fpm 包装器?如果是这样,它是否在套接字上运行,如果是这样,(几乎在那里)你可以发布资源分配配置
  • 使用“/etc/init.d/nginx restart”,nginx正常重启。认为它重新启动正确,因为 php_info() 更新了我在 php.ini 中所做的更改。不过我没有重启 fast_cgi……有必要吗?

标签: wordpress out-of-memory


【解决方案1】:

经过大量的努力,加上一些额外的外部帮助,我已经解决了这个问题。事实证明,这是在设置为跟踪弹出帮助消息的用户帐户下积累的元数据。它被安全删除,一旦删除,网站的加载速度提高了约 30%,并修复了我们遇到的所有管理问题,包括此处列出的问题。

简单修复...只需对您的 WordPress 数据库运行以下查询:

DELETE FROM wp_usermeta WHERE meta_key = 'dismissed_wp_pointers'

我还阅读了向元数据添加几个索引也可以帮助提高性能的文章,因此如果您正在寻找快速调整,也可以尝试这两个 SQL 调用:

ALTER TABLE wp_usermeta ADD INDEX USING BTREE (meta_value(255));
ALTER TABLE wp_postmeta ADD INDEX USING BTREE (meta_value(255));

希望对遇到同样问题的人有所帮助!

【讨论】:

    【解决方案2】:

    在/wp-admin/admin.php 第 108 行:

    if ( current_user_can( 'manage_options' ) )
        @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
    

    这可能是某些管理员用户而不是其他用户的原因。

    您可以在 wp 根目录下的wp-config.php 文件中设置常量,如下所示:

    define( 'WP_MAX_MEMORY_LIMIT', '512M' );
    

    但是,您真的不需要这样做……似乎还有其他事情发生……祝你好运。

    【讨论】:

    • 如果你真的很绝望,找到 do_action 函数,并回显标签名称。你会看到所有运行的动作钩子的垃圾邮件,你会看到它在哪里轰炸。
    • 谢谢,迈克。是的,我确实编辑了 wp-config.php ......我已经为此工作了很长一段时间,并且一直在尝试一切!我将尝试使用 do_action echo 技巧,看看会出现什么。谢谢!
    • 我在 wp-includes/plugin.php 和 Twitter 插件中找到了“function do_action()”,但是由于我所有的插件都被禁用了,Wordpress 不应该不需要调用这个 do_action 函数吗?
    • 抱歉,很快就与...添加了 echo 并且 Wordpress 肯定会调用该函数,即使所有插件都已停用。它在以下标签处死亡:wp_insert_post
    • 所以我一直在跟踪 do_action 跟踪并注意到它最后称为“关闭”(只是在我最初的问题出现内存错误后出现)。似乎 post-new.php 页面已完成,但从未输出到屏幕,而只是错误。我现在更困惑了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2021-11-22
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多