每当我尝试在Magento 1.7的管理员中上传图片时,我似乎都会收到“上传HTTP错误”。我将整个媒体文件夹/文件设置为777,.htaccess信息是正确的,我没有使用密码保护,这种情况发生在任何浏览器中。
非常感谢任何建议!
答案 0 :(得分:16)
有很多事情可能导致这个问题,但这里有一些你可以尝试的事情:
确保/ media目录和所有子目录都有Apache的用户组(通常是'www-data'或'httpd'):
sudo chgrp -R www-data /path/to/magento/media
确保/ media目录和所有子目录都具有给予Apache用户组的适当权限:
sudo chmod -R 775 /path/to/magento/media
在System-> Configuration-> General-> Web中,确保“安全”和“不安全”下的“基本网址”和“基本媒体网址”正确
在您的Magento数据库中,表格core_config_data
包含{{secure_base_url}}
和{{unsecure_base_url}}
确保这些值正确并且包含尾部斜杠,例如http://example.com/
在上面的系统配置中,请确保这些值正确,并考虑原始值中的尾部斜杠。这意味着它们看起来应该像{{secure_base_url}}media
,没有斜杠
在系统 - >缓存管理中,禁用缓存
从您的Magento版本(包括文档根目录中的.htaccess,以及/ media和/ media的所有子目录中的任何.htaccess文件)中获取.htaccess文件,备份当前文件.htaccess文件,然后显式复制新的.htaccess文件以替换它们。
因为.htaccess以'。'开头。某些Linux命令会忽略它,这会导致人们认为他们实际上没有复制或覆盖.htaccess文件,所以请小心这样做。
现在再试一次,如果你得到同样的错误,那将排除.htaccess。
如果您正在使用SSL,请尝试禁用SSL,如果您收到相同的错误,则会排除SSL
导航到app/code/local
和app/code/community
并记下这些目录中的命名空间。现在转到app/etc/modules
并编辑该目录中的每个* .xml文件,该文件与您记下的命名空间匹配<active>
节点的以下值:
<?xml version="1.0"?>
<config>
<modules>
<Namespace_*>
<!-- set this value to "false" -->
<active>false</active>
<!-- more nodes here, just leave every
node alone except <active> -->
</Namespace_*>
</modules>
<config>
现在再试一次,如果你得到同样的错误,那将排除模块冲突
如果图片足够大,您可能会受到PHP设置的限制:
识别你加载的php.ini:
<?php
phpinfo(); // Look for "Loaded Configuration File"
编辑你的php.ini(如果你在Ubuntu上它可能在/etc/php5/apache2/php.ini
):
sudo vi /path/to/php.ini
# Make these three values higher than the filesize of the images you're
# trying to upload:
upload_max_filesize = 200M
post_max_size = 200M
memory_limit = 200M
重新启动您的网络服务器:
sudo /etc/init.d/apache2 restart
如果你已经做到这一点并且没有任何效果,那么你可以采取一些时间密集的措施来缩小它的问题范围:
在同一个网络服务器上创建Magento的全新安装并测试图片上传。
如果它们仍然不起作用,那么Apache或PHP配置(甚至可能是版本)也存在问题
如果它们确实有效,则可能是您的Magento核心文件或Magento配置或Magento数据库或Apache虚拟主机存在问题。采取以下步骤来帮助确定:
创建新数据库
删除/path/to/new/magento/var/*
sudo rm -rf /path/to/new/magento/var/*
在较旧的Magento管理员中,转到System->Tools->Backups
,然后点击Create Backup
。完成后,转到/path/to/old/magento/var/backup/
并将备份插入到您创建的新数据库中:
mysql -p -u username database_name < backup_file
在新的Magento文件系统中,导航至/path/to/new/magento/app/etc/local.xml
并对其进行编辑以指向新数据库:
<username>{{db_user}}</username>
<password>{{db_pass}}</password>
<dbname>{{db_name}}</dbname>
再次尝试在新的Magento安装上上传图片,如果您收到错误,则问题出在您的Magento配置或Magento数据库中。如果您没有收到错误,则问题出在您的Magento核心文件或Apache虚拟主机中。
如果您想提供更多信息,最有用的部分可能是您加载的php.ini
,apache2.conf
和/或httpd.conf
的副本,以及您{的副本{1}} .htaccess
个document root
所有子目录中的{1}}文件,当然会对任何敏感信息进行模糊处理。
答案 1 :(得分:13)
要添加到chjohasbrouck的答案,您还可以从未启用GD PHP扩展程序中获得此错误。
要在Ubuntu上安装Apache,请执行:
sudo apt-get install php5-gd
然后重启apache。
此处有更多Ubuntu说明:http://www.cyberciti.biz/faq/ubuntu-linux-install-or-add-php-gd-support-to-apache/
答案 2 :(得分:9)
如果您使用.htaccess
文件对您的根目录进行了密码保护,请删除此保护并重试。
在.htaccess
内,查找:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/passwd_file
AuthGroupFile /dev/null
require valid-user
请务必重新检查您的安全设置需求,因为您可能会找到比此更好的方法来保护您的网站。
答案 3 :(得分:2)
此错误背后是错误的权限问题。 如果将组更改为apache / www-data用户并更改写入权限并不能解决此问题。 禁用.htpasswd身份验证(如果已启用.httaccess执行此操作注释这些行
)#AuthType Basic
#AuthName "Password Protected Area"
#AuthUserFile .htpasswd path
#Require valid-user
答案 4 :(得分:2)
处理同样的问题我发现在我的情况下这是我的nginx配置的问题。
nginx的默认最大上传大小为1MB。如果你上传较大的文件,你会在你的nginx错误日志中看到413个错误,而Magento只会告诉你一个非描述性的&#34; http上传错误&#34;。
在http {}部分的某个地方的nginx.conf中更改或添加[client_max_body_size]参数,就像这个例子,我将最大上传大小设置为200mb:
http {
client_max_body_size 200m;
}
答案 5 :(得分:2)
我在Magento 1.7中遇到了这个问题,因为图像文件名“dutchman's_pipe.jpg”包含一个撇号。我希望这帮助是其他人。
答案 6 :(得分:0)
我发现了另一个可能的原因。在Magento版本1.6.2.0中发生了这种情况,因为在System - &gt;下网络 - &gt;会话REMOTE_ADDR和HTTP_USER_AGENT已激活。我再次切换到&#34; no&#34;并且此错误消失了(没有任何其他更改!)
答案 7 :(得分:0)
我在Ubuntu 10.04服务器上遇到了同样的问题。这是由这种特殊设置引起的。
现在我在此文件中进行了以下更改:/etc/apache2/mods-available/fcgid.conf
(您必须具有root权限才能对其进行修改):
FcgidMaxRequestLen 1073741824
几乎在最后一行Fcgi命令之后和</IfModule>
之前添加:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
FcgidConnectTimeout 60
FcgidMaxRequestLen 1073741824
</IfModule>