2013-09-25 47 views
11

Tôi dường như nhận được "Lỗi HTTP tải lên" bất cứ khi nào tôi cố gắng tải lên hình ảnh trong quản trị viên của Magento 1.7. Tôi có toàn bộ thư mục/tập tin đa phương tiện được đặt thành 777, thông tin .htaccess là chính xác, tôi không sử dụng bảo vệ bằng mật khẩu và điều này xảy ra trong bất kỳ trình duyệt nào.Magento - Lỗi tải lên HTTP?

Bất kỳ đề xuất nào được đánh giá cao!

+0

Nó cũng có thể http://stackoverflow.com/questions/2233627/swfupload-works-in-ie-but-not-in-firefox –

Trả lời

16

Có rất nhiều điều mà có thể gây ra vấn đề này, nhưng đây là một vài điều bạn có thể thử:

  • Hãy chắc chắn rằng/media thư mục và tất cả các thư mục con có nhóm của Apache của người dùng của bạn (thường là 'www- dữ liệu' hoặc 'httpd'):

    sudo chgrp -R www-data /path/to/magento/media 
    
  • Hãy chắc chắn rằng thư mục/phương tiện truyền thông và tất cả các thư mục con có quyền thích hợp cho nhóm của Apache của bạn sử dụng:

    sudo chmod -R 775 /path/to/magento/media 
    
  • Trong System-> Configuration> General-> Web, hãy chắc chắn "URL cơ sở" và "Cơ sở Truyền thông URL" là chính xác theo cả "An toàn" và "Không an toàn"

    1. Trong Magento của bạn cơ sở dữ liệu, bảng core_config_data chứa các giá trị nguyên cho {{secure_base_url}} của bạn và {{unsecure_base_url}}

      Hãy chắc chắn rằng những giá trị này là chính xác và có dấu slashes, như http://example.com/

    2. Trong confi hệ thống ở trên, đảm bảo rằng các giá trị đó là chính xác kế toán cho dấu gạch chéo sau trong giá trị thô. Điều này có nghĩa họ sẽ giống như {{secure_base_url}}media ví dụ, không có dấu gạch chéo

  • Trong System-> Quản lý Cache, vô hiệu hóa bộ nhớ đệm

  • Lấy file .htaccess từ một download tươi của các phiên bản của Magento (bao gồm cả .htaccess trong thư mục gốc tài liệu của bạn và bất kỳ tệp .htaccess nào trong/media và tất cả các thư mục con của/media), sao lưu các tệp .htaccess hiện tại của bạn, sau đó sao chép một cách rõ ràng các tệp .htaccess mới để thay thế chúng.

    Vì .htaccess bắt đầu bằng '.' nhân vật, nó sẽ bị bỏ qua bởi một số lệnh Linux, có thể khiến mọi người nghĩ rằng họ đã sao chép hoặc ghi đè lên một tập tin .htaccess khi họ thực sự chưa có, vì vậy hãy thực hiện điều này một cách cẩn thận.

    Bây giờ hãy thử lại và nếu bạn gặp lỗi tương tự, điều đó sẽ loại trừ .htaccess.

  • Nếu bạn đang sử dụng SSL, hãy thử tắt SSL và nếu bạn nhận được lỗi tương tự, mà sẽ loại trừ SSL

  • Navigate to app/code/localapp/code/community và hãy lưu ý những không gian tên trong những thư mục. Bây giờ, hãy truy cập app/etc/modules và chỉnh sửa mọi *.file xml trong thư mục đó phù hợp với các không gian tên bạn lưu ý với các giá trị sau cho <active> nút:

    <?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> 
    

    Bây giờ hãy thử một lần nữa, và nếu bạn nhận được lỗi tương tự, rằng sẽ loại bỏ mô-đun xung đột

  • Nếu những hình ảnh đủ lớn, bạn có thể bị hạn chế bởi các thiết lập PHP của bạn:

    1. Xác định php.ini tải của bạn:

      <?php 
      phpinfo(); // Look for "Loaded Configuration File" 
      
    2. Sửa php.ini của bạn (nếu bạn đang ở trên Ubuntu nó có lẽ là trong /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 
      

      Khởi động lại máy chủ web của bạn:

      sudo /etc/init.d/apache2 restart 
      

Nếu bạn đã nhận được điều này đến nay và không có gì có hiệu quả, dưới đây là một số việc tốn thời gian bạn có thể làm để thu hẹp loại sự cố đó là:

  • Tạo một bản cài đặt Magento mới trên cùng một máy chủ web và tải lên hình ảnh thử nghiệm.

    1. Nếu họ vẫn không có tác dụng, đó là một vấn đề với Apache hoặc cấu hình PHP (hoặc có thể thậm chí phiên bản)

    2. Nếu họ làm việc, nó có lẽ là một vấn đề với các tập tin lõi Magento của bạn hoặc cấu hình Magento của bạn hoặc cơ sở dữ liệu Magento hoặc máy chủ ảo Apache. Thực hiện các bước để giúp xác định:

      1. Create a new database

      2. Xóa mọi thứ trong /path/to/new/magento/var/*

        sudo rm -rf /path/to/new/magento/var/* 
        
      3. Trong quản trị Magento cũ của bạn, hãy để System->Tools->Backups và nhấp Create Backup. Khi đã xong, đi đến /path/to/old/magento/var/backup/ và chèn backup của bạn vào cơ sở dữ liệu mới mà bạn đã tạo:

        mysql -p -u username database_name < backup_file 
        
      4. Trong hệ thống tập tin Magento mới của bạn, điều hướng đến /path/to/new/magento/app/etc/local.xml và chỉnh sửa nó để trỏ đến cơ sở dữ liệu mới của bạn:

        <username>{{db_user}}</username> 
        <password>{{db_pass}}</password> 
        <dbname>{{db_name}}</dbname> 
        
      5. Thử tải lên hình ảnh trên cài đặt Magento mới một lần nữa và nếu bạn gặp lỗi, sự cố trong cấu hình Magento hoặc cơ sở dữ liệu Magento của bạn. Nếu bạn không gặp lỗi, sự cố nằm trong các tệp lõi Magento của bạn hoặc máy chủ ảo Apache của bạn.

Nếu bạn muốn cung cấp thêm thông tin, có lẽ các mảnh hữu ích nhất sẽ là một bản sao của bạn được nạp php.ini, apache2.conf và/hoặc httpd.conf, và bản sao các tập tin của bạn từ .htaccessdocument root thông qua tất cả các thư mục con của /media, với mọi thông tin nhạy cảm bị làm xáo trộn tất nhiên.

+0

Đây là danh sách các giải pháp tốt nhất mà tôi đã thấy về vấn đề này. Cuối cùng, tôi đã kết thúc cài đặt lại trên một máy chủ mới, mà dường như đã giải quyết được vấn đề. –

+3

"mcrypt" và "gd" mở rộng PHP bị bỏ qua. Danh sách trên đây để kiểm tra Rất hữu ích, cảm ơn vì điều đó. Tuy nhiên tôi đã kiểm tra tất cả và không nhận được kết quả trên Magento của tôi. Cuối cùng tôi đã tìm thấy vấn đề - có thể nó sẽ hữu ích cho ai đó - hai phần mở rộng PHP cần thiết cho Magento để hoạt động chính xác bị thiếu sau khi di chuyển máy chủ được thực hiện một thời gian trước - "mcrypt" và "gd". Có lẽ một trong số họ gây ra tải lên "lỗi HTTP". Sau khi cài đặt cả hai nó hoạt động như một say mê. – witkacy26

8

Nếu bạn đã bảo vệ bằng mật khẩu thư mục gốc của mình bằng cách sử dụng tệp .htaccess, hãy xóa bảo vệ này và thử lại.

Bên .htaccess của bạn, tìm kiếm:

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

Hãy chắc chắn để kiểm tra lại an ninh của bạn thiết lập nhu cầu, như bạn có thể tìm thấy những cách tốt hơn để bảo vệ trang web của bạn hơn thế này.

+1

Cảm ơn bạn rất nhiều. Điều đó giải quyết được lỗi tải lên :) –

+0

Nó không phải là rất an toàn chỉ để loại bỏ các hạn chế thư mục như trang web sẽ có sẵn bởi công chúng sau đó. Thêm các mục nhập "Được phép từ" tốt hơn có liên quan đến một số IP nhất định nếu có thể. –

12

Để thêm vào câu trả lời của chjohasbrouck, bạn cũng có thể gặp lỗi này do không bật phần mở rộng GD PHP.

Để cài đặt trên Ubuntu w/Apache làm:

sudo apt-get install php5-gd 

và sau đó khởi động lại apache.

Hướng dẫn thêm về Ubuntu tại đây: http://www.cyberciti.biz/faq/ubuntu-linux-install-or-add-php-gd-support-to-apache/

+1

Cảm ơn bạn đã nhắc tôi @pantsburgh – Alexandros

+1

Nó hoạt động cho tôi, cảm ơn! –

0

Tôi tìm thấy một lý do khác có thể xảy ra. Trong Magento phiên bản 1.6.2.0 này xảy ra bởi vì theo System -> Web -> Session REMOTE_ADDR và ​​HTTP_USER_AGENT đã được kích hoạt. Tôi chuyển sang cả hai lần nữa thành "không" và lỗi này biến mất (không có bất kỳ thay đổi nào khác!)

2

Sự cho phép sai là vấn đề đằng sau lỗi này. Nếu thay đổi nhóm thành người dùng apache/www-data và thay đổi quyền ghi sẽ không giải quyết vấn đề này. Disable htpasswd xác thực nếu được kích hoạt vào .httaccess làm nhận xét này những dòng

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

tôi có kinh nghiệm cùng một vấn đề trên máy chủ Ubuntu 10.04 của tôi. Đó là do thiết lập đặc biệt này.

Bây giờ tôi thực hiện thay đổi sau đây trong tập tin này: /etc/apache2/mods-available/fcgid.conf (bạn phải có quyền root để sửa đổi nó):

FcgidMaxRequestLen 1073741824 

Hầu như ở đầu sau khi dòng cuối cùng của FCGI lệnh và trước khi </IfModule> chỉ cần thêm :

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

Đối phó với những vấn đề tương tự tôi thấy rằng trong trường hợp của tôi đó là một vấn đề với cấu hình nginx tôi.

Kích thước tải lên tối đa mặc định cho nginx là 1MB. Nếu bạn tải lên các tệp lớn hơn, bạn sẽ thấy 413 lỗi trong nhật ký lỗi nginx của mình, trong khi Magento sẽ chỉ cho bạn biết "lỗi tải lên http không mô tả".

Thay đổi hoặc thêm thông số [client_max_body_size] trong nginx.conf, đâu đó trong phần http {}, như ví dụ này, nơi tôi thiết lập kích thước tải lên tối đa đến 200 MB:

http { 

    client_max_body_size 200m; 

} 
+0

Nhìn vào nhật ký bảng điều khiển trong Chrome, tôi có thể thấy lỗi 413, điều này đã giúp tôi gỡ lỗi và áp dụng giải pháp này. Tốt đẹp! –

1

Tôi có vấn đề này trong Magento 1,7 vì tên tập tin ảnh "dutchman's_pipe.jpg" chứa một dấu nháy đơn. Tôi mong điều này giúp được người nào khác.