11

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

任何建议都非常感谢!

4

8 回答 8

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 中,确保“Secure”和“Unsecure”下的“Base URL”和“Base Media URL”都是正确的

    1. 在您的 Magento 数据库中,该表core_config_data包含您的原始值{{secure_base_url}}{{unsecure_base_url}}

      确保这些值是正确的并且有斜杠,比如http://example.com/

    2. 在上面的系统配置中,确保这些值对于原始值中的尾部斜线是正确的。这意味着它们应该看起来像{{secure_base_url}}media,例如,没有斜线

  • 在 System->Cache Management 中,禁用缓存

  • 从新下载的 Magento 版本中获取 .htaccess 文件(包括文档根目录中的 .htaccess 以及 /media 和 /media 的所有子目录中的任何 .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副本,当然任何敏感信息都会被混淆。.htaccessdocument root/media

于 2013-09-25T05:24:52.857 回答
13

要添加到 chjohasbrouck 的答案,您还可以通过未启用 GD PHP 扩展来获得此错误。

要在带有 Apache 的 Ubuntu 上安装,请执行以下操作:

sudo apt-get install php5-gd

然后重新启动apache。

更多 Ubuntu 说明:http ://www.cyberciti.biz/faq/ubuntu-linux-install-or-add-php-gd-support-to-apache/

于 2014-03-10T18:08:06.090 回答
9

如果您使用.htaccess文件对根目录进行了密码保护,请移除此保护并重试。

在你的内部.htaccess,寻找:

AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/passwd_file
AuthGroupFile /dev/null
require valid-user

确保重新检查您的安全设置需求,因为您可能会找到比这更好的方法来保护您的网站。

于 2014-01-27T04:15:14.033 回答
2

错误的权限是此错误背后的问题。如果将组更改为 apache/www-data 用户并更改写入权限并不能解决此问题。如果在 .httaccess 中启用,则禁用 .htpasswd 身份验证以执行此注释这些行

#AuthType Basic
#AuthName "Password Protected Area"
#AuthUserFile .htpasswd path
#Require valid-user
于 2014-09-10T11:12:26.483 回答
2

处理同样的问题我发现在我的情况下这是我的 nginx 配置的问题。

nginx 的默认最大上传大小为 1MB。如果您上传较大的文件,您会在 nginx 错误日志中看到 413 错误,而 Magento 只会告诉您一个非描述性的“http 上传错误”。

在 nginx.conf 中的 http {} 部分中更改或添加 [client_max_body_size] 参数,例如我将最大上传大小设置为 200mb 的示例:

http {

    client_max_body_size 200m; 

}
于 2015-03-11T06:55:40.393 回答
2

我在 Magento 1.7 中遇到了这个问题,因为图像文件名“dutchman's_pipe.jpg”包含一个撇号。我希望这对别人有帮助。

于 2016-08-30T17:36:10.960 回答
0

我找到了另一个可能的原因。在 Magento 版本 1.6.2.0 中,这是因为在 System --> Web --> Session REMOTE_ADDR 和 HTTP_USER_AGENT 下被激活。我再次将两者都切换为“否”,这个错误消失了(没有任何其他改变!)

于 2014-06-26T09:24:14.303 回答
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>
于 2014-11-22T08:49:26.057 回答