WordPress:“HTTP 错误。”上传文件时
Posted
技术标签:
【中文标题】WordPress:“HTTP 错误。”上传文件时【英文标题】:Wordpress: "HTTP Error." When Uploading Files 【发布时间】:2011-05-04 17:07:09 【问题描述】:我正在使用 php5 在共享主机上运行 WP 3.0.1。我在通过 WP 管理部分的媒体上传器上传稍大一点的文件时遇到问题。
每次我尝试上传超过几兆字节的文件时,它都会上传,说它正在运行,然后给我一个大大的红色“HTTP 错误”。 - 仅此而已。
这只发生在稍大一点的文件上 - 即 20mb 的 .mp3 文件。一个 5mb 的文件似乎可以正常工作。奇怪的是过去我们上传 40mb 的文件都没有问题。
--
这是我迄今为止为尝试补救这种情况所采取的步骤:
-
仔细检查 php.ini 以确保增加上传、发布和内存大小足够高。
更新了 .htaccess 以包含过滤我在其他地方找到的安全模块。
通过 ftp 仔细检查所有文件权限以确保它们是 755。
打电话给主持人 - “他们不支持第 3 方脚本”(我讨厌 IPower)
尝试使用大小相似的不同音频文件。
禁用所有插件
--
对于可能导致模糊“HTTP 错误”的原因,你们还有什么想法吗?有问题吗?
提前致谢。
【问题讨论】:
主机上的 PHP 设置可能有一些变化。 不知道该怎么做。已经尝试打电话给他们,但他们没有帮助 - 我尝试更改根 php.ini 没有成功。 我在 PHP 5.2 上的 WordPress 3 和 PHP 5.3.6 上看到了这个问题,它适用于同一个文件。我在 5.3.6 服务器上创建了一个简单的 PHP 文件上传器,它可以很好地上传文件。我认为这与 WordPress 和最新的 PHP 有关。 【参考方案1】:我在使用 nginx 和 PHP5-FPM(以及 WordPress 4.1)时遇到了类似的问题。
症状:文件(
即使您在 php.ini 中设置了 upload_max_filesize
,您也应该检查 post_max_size
是否(至少)一样大。记得重启php5-fpm。
如果仍然不起作用,请编辑您的 nginx.conf
文件(在 Debian/Ubuntu 中为 /etc/nginx/nginx.conf)并将其添加到 http 块中:
client_max_body_size 100m;
然后重启 Nginx。
【讨论】:
谢谢,使用client_max_body_size 100m;
后它可以工作了,只是一个问题,它是否安全?
@StreetCoder WordPress 有一个无法上传的文件类型白名单 - upload_mimes 过滤器允许您对此进行调整。
也为我工作!【参考方案2】:
我们的一位客户遇到了同样的问题。
最后我们发现上传图片时wordpress“HTTP错误”是由于服务器端的更改而发生的。托管公司决定为服务器添加 APC 加速,以提高服务器的稳定性和速度。 APC 加速应该只适用于 FastCGI 而不是 su,因此他们将 PHP 设置为作为 FastCGI 运行。
当使用 PHP 作为 FastCGI 时,如果您尝试上传大于 128KB 的文件,则会出现错误“mod_fcgid:HTTP 请求长度 131388(到目前为止)超过 MaxRequestLen (131072)”并导致 550 内部服务器错误。 这是因为 MaxRequestLen 指令的值默认设置为 131072 字节 (128KB)。 解决此问题的一种方法(如果服务器使用 Plesk)是编辑 /etc/httpd/conf.d/fcgid.conf 并将 MaxRequestLen 设置为更高的值,例如 15MB (MaxRequestLen 15728640)。 如果服务器使用 cPanel,则可以通过服务器的 WHM 完成此更改。
所以,如果您可以上传最大 128KB 的图片,这就是您的问题的解决方案。
【讨论】:
【参考方案3】:将此行放入您的 wp-config 文件中:
define('WP_MEMORY_LIMIT', '64M');
【讨论】:
【参考方案4】:正如您已经推断的那样,问题在于文件上传的大小。提醒您一下,HTTP 并不是真正为传输大文件而构建的……它可以 做到这一点,但并非总是如此,而且不是很好。您遇到了主机因文件太大而中断传输的问题。这很可能是您无权访问的某个服务器设置。
由于“他们不支持 3rd 方脚本”,我猜您处于共享托管环境中,这就是为什么您的服务器上可能会发生一些变化而无需您做任何事情的原因。可能的解决方案:
-
获取其他主机
使用专用服务器
通过 FTP 而不是从 WordPress 中传输较大的文件。
【讨论】:
【参考方案5】:每当我尝试上传媒体时,我都会遇到同样的问题,除了文件大于 124Kb 时出现“HTTP 错误”! WP 3.3.1,PHP 5.2。
我打电话给我的主机,他们将内存增加到 64M(也在 wp-config 中更改)并将upload_limit 增加到 8 MB(默认为 2 MB)。这没有用,所以我求助于几乎所有其他方法,从篡改 .htaccess 到重新安装 WP 到在另一台服务器上安装新的 WP,但一切都指向服务器问题。我再次致电主机并与另一位增加允许的 HTTP 请求长度设置的技术人员交谈。
【讨论】:
【参考方案6】:对于未来的读者,经过一天的艰难搜索,终于找到了解决方案。
在 fcgid.conf 文件中有一个设置(我在 /etc/apache2/mods-enabled 中):FcgidMaxRequestLen
。见https://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestlen
我将它以字节为单位设置为适当的长度,一切正常。看来 apache 已经改变了他们对默认值(现在是 131072 字节)的想法:
在 2.3.6 之前,默认为 1GB。大多数早期版本的用户应该使用该指令来设置更合理的限制。
【讨论】:
【参考方案7】:服务器可能已将 imagick 安装为默认库,用于修复 wordpress
我将以下代码放入我的functions.php
文件中。有效!
add_filter( 'wp_image_editors', 'change_graphic_lib' );
function change_graphic_lib($array)
return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
【讨论】:
functions.php 在哪里?【参考方案8】:对我来说,当 php 在快速 cgi 模式下运行时出现“http 错误”问题。
mod_fcgid 中的“MaxRequestLen”限制了文件上传大小,wordpress 抛出“http 错误”。
您需要在您的 httpd.conf (ubuntu 14 上的 apache2.conf) 中添加以下配置:
<IfModule mod_fcgid.c>
# 20MB
MaxRequestLen 20000000
</IfModule>
【讨论】:
【参考方案9】:我尝试了所有通常建议的 php.ini 更改以及 wp-config 更改,但没有成功。最后发现有人建议在我的浏览器中查看 XHR async-upload.php 详细信息,并发现我们的防火墙出于某种原因将上传标记为木马(具体为 MalAgent.H_9218)。所以不要忘记检查那里,它也可以识别其他可能的上传问题。
Chrome 说明: 按 F12 并选择网络选项卡,然后尝试使用 WordPress 上传,确保过滤器行在 All 或 XHR 上,在左下窗格中找到并选择 async-upload.php,在右下窗格中选择预览。
【讨论】:
【参考方案10】:在我的情况下,通过在浏览器中关闭 Adblocker 扩展
来解决【讨论】:
【参考方案11】:我们的问题是我们的负载平衡器的硬盘空间不足。请务必设置日志轮换,以便在一段时间后删除最旧的日志。
【讨论】:
【参考方案12】:我们的问题实际上出在客户端:人们试图通过拖放从 OneDrive 上传,这些文件尚未在本地同步但显示在 OneDrive 文件夹中。导致“-200”错误消息。如果文件在本地硬盘上,它工作正常。
【讨论】:
以上是关于WordPress:“HTTP 错误。”上传文件时的主要内容,如果未能解决你的问题,请参考以下文章
上传图片时如何修复 WordPress 上的 HTTP 错误?