每当我尝试在 Magento 1.7 的管理员中上传图片时,我似乎都会收到“上传 HTTP 错误”。我将整个媒体文件夹/文件设置为 777,.htaccess 信息是正确的,我没有使用密码保护,这发生在任何浏览器中。
任何建议都非常感谢!
每当我尝试在 Magento 1.7 的管理员中上传图片时,我似乎都会收到“上传 HTTP 错误”。我将整个媒体文件夹/文件设置为 777,.htaccess 信息是正确的,我没有使用密码保护,这发生在任何浏览器中。
任何建议都非常感谢!
有很多事情可能会导致此问题,但您可以尝试以下几点:
确保 /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”都是正确的
在您的 Magento 数据库中,该表core_config_data
包含您的原始值{{secure_base_url}}
和{{unsecure_base_url}}
确保这些值是正确的并且有斜杠,比如http://example.com/
在上面的系统配置中,确保这些值对于原始值中的尾部斜线是正确的。这意味着它们应该看起来像{{secure_base_url}}media
,例如,没有斜线
在 System->Cache Management 中,禁用缓存
从新下载的 Magento 版本中获取 .htaccess 文件(包括文档根目录中的 .htaccess 以及 /media 和 /media 的所有子目录中的任何 .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
副本,当然任何敏感信息都会被混淆。.htaccess
document root
/media
要添加到 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/
如果您使用.htaccess
文件对根目录进行了密码保护,请移除此保护并重试。
在你的内部.htaccess
,寻找:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/passwd_file
AuthGroupFile /dev/null
require valid-user
确保重新检查您的安全设置需求,因为您可能会找到比这更好的方法来保护您的网站。
错误的权限是此错误背后的问题。如果将组更改为 apache/www-data 用户并更改写入权限并不能解决此问题。如果在 .httaccess 中启用,则禁用 .htpasswd 身份验证以执行此注释这些行
#AuthType Basic
#AuthName "Password Protected Area"
#AuthUserFile .htpasswd path
#Require valid-user
处理同样的问题我发现在我的情况下这是我的 nginx 配置的问题。
nginx 的默认最大上传大小为 1MB。如果您上传较大的文件,您会在 nginx 错误日志中看到 413 错误,而 Magento 只会告诉您一个非描述性的“http 上传错误”。
在 nginx.conf 中的 http {} 部分中更改或添加 [client_max_body_size] 参数,例如我将最大上传大小设置为 200mb 的示例:
http {
client_max_body_size 200m;
}
我在 Magento 1.7 中遇到了这个问题,因为图像文件名“dutchman's_pipe.jpg”包含一个撇号。我希望这对别人有帮助。
我找到了另一个可能的原因。在 Magento 版本 1.6.2.0 中,这是因为在 System --> Web --> Session REMOTE_ADDR 和 HTTP_USER_AGENT 下被激活。我再次将两者都切换为“否”,这个错误消失了(没有任何其他改变!)
我在我的 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>