我有一个干净的构建(WordPress 3.9.1运行二十四个主题)。
我已经安装了 WooCommerce 插件并添加了一个产品。
该产品是可变产品,有 65 种变化。
当我链接所有变体并保存时,没有任何问题。但是编辑任何信息(例如库存数量或价格等)并点击“更新”将导致以下问题。
一旦我单击更新,我就会被重定向到 edit.php(帖子页面)并且更改未保存。没有错误,一切似乎都运行得很好。
在逐一删除变体后,我意识到一旦少于 50 个,帖子就会完美更新。
我尝试过增加 PHP.ini、.htaccess、wp-config.php 中的内存,但什么都没有。
任何想法都可以,因为我完全迷失在这个想法上。
提前非常感谢。
迈克尔
编辑:实际上,您甚至不必尝试更改新产品的属性。即使只是尝试改变它,也会导致这个问题。
我们遇到了类似的问题,我们被重定向到 WordPress 帖子页面 (
/wp-admin/edit.php
),而不是保存帖子。仅当内容字段包含大约 7.500 个字符或更多时,我们才会遇到此问题。低于此计数后,帖子已保存,没有任何问题。
在尝试了多种建议(甚至是此处列出的建议)后,结果发现 PHP 中的临时文件夹存在问题。修复临时文件夹后,保存帖子的问题得到解决。我们偶然发现了这一点,因为在上传媒体文件时,它给出了有关缺少临时文件夹的错误消息。所以我猜 WordPress 仅当帖子超过一定大小(我提到的字符数)时才使用临时文件夹。
希望这对未来的其他人有帮助。
我认为您的问题在于您的共享托管设置。一些共享主机会添加最大 MySQL 查询长度作为安全措施。发生的情况是,您的主机看到一个巨大的查询(由于所有的变化)并完全删除该查询。由于您正在执行较小的查询来添加和删除变体,因此直到您想要更新整个产品时,问题才会显现出来。
解决此问题的方法是联系您的托管提供商,让他们将 MySQL 查询长度增加到一个更大的值。您可以在管理面板中自行调整它,它通常被标记为安全功能,所以我将从这里开始。您还可以尝试将 MySQL 配置(通常位于
/etc/mysql/my.cnf
或 /etc/my.cnf
)文件更新为:
[mysqld]
max_allowed_packet=32M
如果您无法更新配置,那么您肯定需要联系您的托管提供商。
对于遇到类似问题的其他人,请务必检查您的主机的模组安全性。我的帖子请求被他们的系统标记为威胁,因此他们关闭了此功能。
我一直在寻找类似问题的答案,这就是我发布这篇文章的原因,尽管已经过去了几年。我正在使用 Wordpress 5.7.2 和 Woocommerce 5.3.0。
首先,不要将自己局限于仅在 Wordpress 级别进行诊断。启用 PHP 调试是值得的,例如在php.ini中输入几行(当然,你可以根据自己的需求进行配置):
error_reporting = E_ALL & ~ E_NOTICE
error_log = /errors.log
log_errors = On
就我而言,调试日志中出现以下条目:
PHP Warning: PHP Startup: Unable to create temporary file, Check permissions in temporary files directory. in Unknown on line 0
PHP Warning: PHP Startup: POST data can't be buffered; all data discarded in Unknown on line 0
我比较了我的开发环境的结构,一切正常。结果发现生产环境中没有临时目录(我的就是/tmp)。创建后,一切都开始按预期工作。
没有人说临时文件夹放在哪里