2013-09-25 36 views
11

每當我嘗試在Magento 1.7的管理員中上傳圖像時,我似乎都會收到「上傳HTTP錯誤」。我有整個媒體文件夾/文件設置爲777,.htaccess信息是正確的,我沒有使用密碼保護,這發生在任何瀏覽器。Magento - 上傳HTTP錯誤?

任何建議,非常感謝!

+0

它也可以http://stackoverflow.com/questions/2233627/swfupload-works-in-ie-but-not-in-firefox –

回答

16

有很多東西可能會造成這個問題,但這裏有一些事情你可以嘗試:

  • 確保/ media目錄及其所有子目錄中有你的Apache的用戶組(通常是「WWW-數據」或‘的httpd’):

    sudo chgrp -R www-data /path/to/magento/media 
    
  • 確保/媒體目錄及其所有子目錄賦予你的Apache的用戶組適當的權限:

    sudo chmod -R 775 /path/to/magento/media 
    
  • 在系統 - >配置 - >常規 - >網絡,確保「基本URL」和「基本媒體URL」正在這兩個「安全」正確的「不安全」

    1. 在你的Magento數據庫,表core_config_data包含原始值,請{{secure_base_url}}{{unsecure_base_url}}

      確保這些值是正確的,有結尾的斜槓,像http://example.com/

    2. 在系統CONFI請確保這些值是正確的,以反映原始值中的斜線。這意味着它們應該像{{secure_base_url}}media例如,沒有斜線

  • 在系統 - >緩存管理,禁用緩存

  • 從你的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 
      

      重新啓動你的web服務器:

      sudo /etc/init.d/apache2 restart 
      

如果您已經得到了這麼多,沒有任何工作,這裏有一些時間密集的事情,你可以做的,以縮小它是什麼樣的問題:

  • 在同一個網絡服務器上創建全新安裝的Magento並測試圖片上傳。

    1. 如果他們仍然不能正常工作,它與Apache或PHP配置(或者甚至可能版本)中的問題

    2. 如果他們做的工作,它可能是與你的Magento核心文件還是有問題您的Magento配置或Magento數據庫或Apache虛擬主機。採取這些步驟,以幫助確定哪些:

      1. /path/to/new/magento/var/*

        sudo rm -rf /path/to/new/magento/var/* 
        
      2. 創建一個新的數據庫

      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,和你.htaccess文件從副本複印件document root通過/media的所有子目錄,當然任何敏感信息混淆。

+0

這是我見過的關於這個問題的最佳解決方案列表。最後,我最終重新安裝了一臺新主機,似乎解決了這個問題。 –

+3

錯過了「mcrypt」和「gd」PHP擴展。 上面列出的東西要檢查非常有用,謝謝。然而,我已經檢查了一切,沒有得到我的Magento的結果。最終我發現了這個問題 - 可能對某人有用 - Magento正常工作所需的兩個PHP擴展在一段時間之前完成服務器遷移後丟失 - 「mcrypt」和「gd」。可能其中之一導致上傳「HTTP錯誤」。安裝後它就像一個魅力。 – witkacy26

8

如果您使用.htaccess文件對密碼保護了根目錄,請刪除此保護並重試。

.htaccess內部,尋找:

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

確保重新檢查您的安全設置的需要,因爲你可能會發現更好的方法來保護您的網站不止這一個。

+1

非常感謝。這解決了上傳錯誤:) –

+0

這是不是很安全,只是爲了消除目錄限制,因爲該網站將公衆可用。如果可能,最好添加「允許來自」與某些IP相關的條目。 –

0

我發現了另一個可能的原因。在Magento 1.6.2.0版本中,這是因爲在系統 - > Web - >會話中激活了REMOTE_ADDR和HTTP_USER_AGENT。我再次切換到「否」,並且此錯誤消失(沒有任何其他更改!)

2

錯誤的權限是此錯誤後面的問題。 如果將組更改爲apache/www-data用戶並更改寫入權限並不能解決此問題。如果使能爲.httaccess做此評論這些行

#AuthType Basic 
#AuthName "Password Protected Area" 
#AuthUserFile .htpasswd path 
#Require valid-user 
0

我遇到了同樣的問題,我的Ubuntu 10.04服務器上 禁用htpasswd的認證。這是由這個特定的環境造成的。

現在我做這個文件中的以下變化:/etc/apache2/mods-available/fcgid.conf(你必須有root權限進行修改):

FcgidMaxRequestLen 1073741824 

差不多就FCGI的最後一行之後結束命令和</IfModule>前只需添加:

<IfModule mod_fcgid.c> 
    AddHandler fcgid-script .fcgi 
    FcgidConnectTimeout 60 
    FcgidMaxRequestLen 1073741824 
</IfModule> 
2

處理同樣的問題我發現在我的情況下,這是我的nginx配置的問題。

nginx的默認最大上傳大小爲1MB。如果你上傳較大的文件,你會在你的nginx錯誤日誌中看到413個錯誤,而Magento只會告訴你一個非描述性的「http上傳錯誤」。

在nginx中更改或添加[client_max_body_size]參數。CONF,在HTTP {}部分地方,像這樣的例子,我設定最大上傳大小爲200MB:

http { 

    client_max_body_size 200m; 

} 
+0

查看Chrome中的控制檯日誌,我可以看到413錯誤,這幫助我調試並應用此解決方案。太好了! –

1

我在Magento 1.7有這個問題,因爲圖像文件名「dutchman's_pipe.jpg」載一個撇號。我希望這個幫助是其他人。