Magento - 上传HTTP错误?

时间:2013-09-25 01:14:48

标签: magento magento-1.7

每当我尝试在Magento 1.7的管理员中上传图片时,我似乎都会收到“上传HTTP错误”。我将整个媒体文件夹/文件设置为777,.htaccess信息是正确的,我没有使用密码保护,这种情况发生在任何浏览器中。

非常感谢任何建议!

8 个答案:

答案 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中,确保“安全”和“不安全”下的“基本网址”和“基本媒体网址”正确

    1. 在您的Magento数据库中,表格core_config_data包含{{secure_base_url}}{{unsecure_base_url}}

      的原始值

      确保这些值正确并且包含尾部斜杠,例如http://example.com/

    2. 在上面的系统配置中,请确保这些值正确,并考虑原始值中的尾部斜杠。这意味着它们看起来应该像{{secure_base_url}}media,没有斜杠

  • 在系统 - >缓存管理中,禁用缓存

  • 从您的Magento版本(包括文档根目录中的.htaccess,以及/ media和/ media的所有子目录中的任何.htaccess文件)中获取.htaccess文件,备份当前文件.htaccess文件,然后显式复制新的.htaccess文件以替换它们。

    因为.htaccess以'。'开头。某些Linux命令会忽略它,这会导致人们认为他们实际上没有复制或覆盖.htaccess文件,所以请小心这样做。

    现在再试一次,如果你得到同样的错误,那将排除.htaccess。

  • 如果您正在使用SSL,请尝试禁用SSL,如果您收到相同的错误,则会排除SSL

  • 导航到app/code/localapp/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设置的限制:

    1. 识别你加载的php.ini:

      <?php
      phpinfo(); // Look for "Loaded Configuration File"
      
    2. 编辑你的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的全新安装并测试图片上传。

    1. 如果它们仍然不起作用,那么Apache或PHP配置(甚至可能是版本)也存在问题

    2. 如果它们确实有效,则可能是您的Magento核心文件或Magento配置或Magento数据库或Apache虚拟主机存在问题。采取以下步骤来帮助确定:

      1. 创建新数据库

      2. 删除/path/to/new/magento/var/*

        中的所有内容
        sudo rm -rf /path/to/new/magento/var/*
        
      3. 在较旧的Magento管理员中,转到System->Tools->Backups,然后点击Create Backup。完成后,转到/path/to/old/magento/var/backup/并将备份插入到您创建的新数据库中:

        mysql -p -u username database_name < backup_file
        
      4. 在新的Magento文件系统中,导航至/path/to/new/magento/app/etc/local.xml并对其进行编辑以指向新数据库:

        <username>{{db_user}}</username>
        <password>{{db_pass}}</password>
        <dbname>{{db_name}}</dbname>
        
      5. 再次尝试在新的Magento安装上上传图片,如果您收到错误,则问题出在您的Magento配置或Magento数据库中。如果您没有收到错误,则问题出在您的Magento核心文件或Apache虚拟主机中。

如果您想提供更多信息,最有用的部分可能是您加载的php.iniapache2.conf和/或httpd.conf的副本,以及您{的副本{1}} .htaccessdocument 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>