Làm cách nào để khắc phục lỗi HTTP khi tải lên hình ảnh?


28

Tôi đang sử dụng WordPress 3.4.1 trên Ubuntu 12.04 bằng Apache và PHP 5.3.X

Khi tôi đăng nhập vào bảng điều khiển và thêm một bài viết mới. Sau đó thử tải lên một hình ảnh để đặt làm hình ảnh nổi bật, tôi nhận được một hộp màu đỏ với thông báo "Lỗi HTTP".

Tôi đã đọc về những người nói không sử dụng trình tải lên flash và chỉ sử dụng trình tải lên trình duyệt, nhưng khi tôi thử điều đó, tôi chỉ nhận được 500 Lỗi Máy chủ Nội bộ.

Tôi đã thử thêm AddType x-mapp-php5 .phpvào đầu tệp .htaccess của mình, không có may mắn thay đổi.

Vô hiệu hóa TẤT CẢ các plugin không có hiệu lực. Tôi đã thử cài đặt mới. Không may mắn.

Cập nhật 17/10/2016 - Nếu bạn đang sử dụng vai trò hoặc khả năng tùy chỉnh, vui lòng thử sử dụng vai trò / khả năng gốc và thử lại.

Những điều cần xem xét kiểm tra:

  • Quyền sở hữu tập tin
  • Quyền truy cập tệp
  • cấu hình .htaccess
  • Phiên bản 7+ PHP
  • Phiên bản hiện tại của WordPress

Nếu bạn đang hoạt động đằng sau một proxy, hãy chắc chắn rằng bạn đã hết thời gian chờ máy chủ proxy.

WordPress 3.4.1 Lỗi tải lên phương tiện HTTP


Lý do đằng sau là AddType x-mapp-php5 .phpgì? Điều đó dường như là rất cụ thể máy chủ. Tôi nghĩ rằng nó có nhiều khả năng phá vỡ trang web của bạn (ví dụ: PHP) khủng khiếp (hoặc không làm gì nếu bạn may mắn) hơn là cải thiện bất cứ điều gì?
MrWhite

Câu trả lời:


25

Tôi đặt đoạn mã sau vào functions.phptập tin của tôi . Nó hoạt động!

add_filter( 'wp_image_editors', 'change_graphic_lib' );

function change_graphic_lib($array) {
  return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
}

Khi điều này có ích là vì nó thay đổi mô-đun mã PHP được sử dụng để xử lý hình ảnh được tải lên để sử dụng với WordPress.

Quá trình xử lý này bao gồm di chuyển hình ảnh vào cơ sở dữ liệu thư viện phương tiện và tạo ra các hình ảnh có kích thước khác nhau ("hình thu nhỏ", "trung bình", "lớn") mà WordPress luôn muốn có sẵn cho các chủ đề truy cập.

Nó làm cho mô-đun "GD" được sử dụng, bởi vì nó là lần đầu tiên. Trong một số thiết lập máy chủ, thư viện "Imagick" mới hơn không chơi tốt với các kịch bản hình ảnh nhất định khác, chẳng hạn như kích thước pixel lớn, do đó, buộc thư viện "GD" phải sử dụng là một cách khắc phục.


Tốt hơn là tạo một plugin nhỏ hơn là đặt nó vào functions.php, bởi vì nếu bạn thay đổi chủ đề, bạn sẽ mất mã. Và tôi chắc chắn rằng bạn muốn nó hoạt động sau khi thay đổi chủ đề
EliasNS

1
+1 Điều này hiệu quả với tôi khi gặp vấn đề này với thiết lập WP 4.9.4 vượt trội trên tài khoản HostGator mới. @EliasNS noob ở đây; Cách đúng đắn để tạo một plugin nhỏ cho việc này là gì?
Andrew Janke

@AndrewJanke, bạn có thể sử dụng plugin 😅 es.wordpress.org/plugins/pluginception
EliasNS

"Tưởng tượng" ? Không phải "ImageMagick" ?
Peter Mortensen

21

Sau khi khắc phục sự cố với @Wyck trong trò chuyện, chúng tôi đã thu hẹp vào vấn đề cơ bản.

Vấn đề liên quan đến cấu hình máy chủ của tôi không có dung lượng bộ nhớ phù hợp được phân bổ cho Apache / PHP.

Nếu bất cứ ai có cùng vấn đề này, vui lòng thử xác minh rằng bạn có đủ (64 MB +) bộ nhớ máy chủ được phân bổ cho Apache / PHP trong cài đặt cấu hình máy chủ của bạn. Bạn cũng có thể thêm phần này vào tệp wp-config.php của mình:

define('WP_MEMORY_LIMIT', '64MB');

Nếu giải pháp trên không hoạt động, hãy đọc bài viết Vấn đề về Trình tải lên hình ảnh / phương tiện? để xử lý sự cố thêm.

Hãy thử thêm từng cái một hoặc tất cả các chỉnh sửa .htaccess sau vào tệp .htaccess trong thư mục gốc của bản cài đặt WordPress của bạn.

Nghiêm túc, hãy thử một trong những giải pháp dưới đây để bạn biết cái nào đã làm được. Đừng chỉ dán tất cả chúng vào tệp .htaccess của bạn ngay lập tức.

Hãy thử dòng này:

AddType x-mapp-php5 .php

mod_security có thể gây ra vấn đề. Vô hiệu hóa nó để xem nếu đó là vấn đề. Để làm điều này, tạo một tệp .htaccess trong thư mục wp-admin của bạn. Thêm cái này vào nó:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

Nếu bạn đang sử dụng kiểm soát truy cập dựa trên xác thực trên Máy chủ web của bạn (thường được gọi là htpasswd, xác thực cơ bản, thư mục được bảo vệ bằng mật khẩu hoặc tương tự), WordPress không thể xử lý nó cho Flash Uploader, Cron và XMLRPC. Các tập tin liên quan cần được loại trừ để làm việc. Hãy nhớ rằng điều này có thể phá vỡ các cân nhắc bảo mật của bạn.

# Exclude the file upload and WordPress CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
    Satisfy Any
    Order allow,deny
    Allow from all
    Deny from none
</FilesMatch>

Một lưu ý cuối cùng: một số người đã nói rằng nếu sử dụng phiên bản PHP 5.3.X ít hơn, bạn có thể thử tắt Chế độ an toàn PHP.

Nếu bạn đang chạy WordPress nhiều trang web và đang nhận được lỗi HTTP hoặc lỗi máy chủ nội bộ, liên quan đến tải lên hình ảnh, vui lòng đọc Tải hình ảnh lên nhiều trang web gây ra lỗi HTTP ) cho các ý tưởng và giải pháp khắc phục sự cố có thể khác.


ok ... thật tốt khi biết ... bạn đã đọc rằng WP cố gắng phân bổ tối đa 256 MB ram để nó define('WP_MEMORY_LIMIT', '64MB');sẽ lớn hơn nếu có thể.
Damien

1
Nếu bạn đang sử dụng WP 4.1.1, AddType x-mapp-php5 .phpthì đó không còn là giải pháp khả thi vì nó buộc trang chỉ cần in mã PHP dưới dạng văn bản thuần túy
cameronjonesweb

1
Hoặc thêm tệp này vào tệp cấu hình trang web của bạn nếu bạn đang sử dụng nginx:client_max_body_size 128m;
Flatron

4

Tôi gặp phải lỗi tương tự, khi cố gắng tải lên phương tiện truyền thông trong wordpress. Trong Chrome, nó hiển thị dưới dạng http: error; trong Firefox, lỗi trông khá khác nhau. Trang web chứa đầy những câu chuyện về những người đã dành nhiều ngày để theo đuổi lỗi (tôi cũng vậy :-(). Các giải pháp rất nhiều, nhưng không ai giải thích được tại sao, ít nhất là không theo cách phù hợp với các triệu chứng.

Đóng góp xứng đáng của tôi: Tôi nhận thấy rằng vấn đề tương quan với lỗi phân đoạn được báo hiệu trong tệp nhật ký của apache2. Điều đó làm tôi băn khoăn, vì rất khó chẩn đoán.

Việc khởi động lại toàn bộ máy chủ đã loại bỏ tất cả các triệu chứng và đột nhiên tôi có thể tải lên lại phương tiện trong Wordpress. Thật khó chịu, tôi không biết tại sao điều này xảy ra. Việc khởi động lại có hiệu quả ngăn tôi khỏi bất kỳ nghiên cứu nào nữa và bây giờ tôi sẽ phải đợi (vài tuần? Tháng?) Để vấn đề xuất hiện trở lại. Tôi hy vọng điều này sẽ giúp những người khác trong cuộc tìm kiếm nguyên nhân của vấn đề này. Mặc dù vậy, vợ tôi rất vui vì tôi không còn có thể dành nhiều đêm để theo đuổi vấn đề này ...


1

Tôi đã giải quyết vấn đề này bằng cách thay đổi chủ sở hữu của tôi từ rootđể apachenhư dưới đây.

chown -R apache:apache /var/www/html/mydomain

Và sau đó tôi có thay đổi sự cho phép của wp-content/uploads/để 775.

Sau đó, tôi đã cố gắng tải lên một hình ảnh trên phương tiện truyền thông. Tôi đã thành công để tải lên hình ảnh.


0

Tôi gặp vấn đề tương tự. Tôi đã thử nhiều bản sửa lỗi khác nhau, bao gồm thay đổi bộ xử lý hình ảnh mặc định từ PHP GD sang ImageMagick bằng Plugin Force Image Magick

Điều này giúp với Lỗi HTTP / lỗi 500 nhưng hình thu nhỏ không còn được tạo. Sau đó tôi đã tắt plugin một lần nữa và điều sau đó đã giúp tôi là câu trả lời này cho câu hỏi Có vẻ như thay đổi kích thước hình ảnh không hoạt động tốt . My PHP_MEMORY_LIMITđã được đặt ở 160MBmức tối đa tuyệt đối mà hoster của tôi cho phép.

Để tải lên hình ảnh, điều này dẫn đến kích thước tối đa có thể của hình ảnh xung quanh 6000 x 6000 pxkhi sử dụng PHP GD và tạo hình thu nhỏ. Vì vậy, điều quan trọng là không chỉ kiểm tra kích thước tệp mà còn cả kích thước của hình ảnh. Tải lên hình ảnh với kích thước cao hơn dẫn đến Lỗi HTTP / lỗi 500 ngay cả với kích thước tệp nhỏ.


0

Tôi đã gặp vấn đề như vậy nhiều lần và đã giải quyết bằng cách tăng memory_limit = 256Mphp.ini HOẶC thêm define( 'WP_MEMORY_LIMIT', '256M' );vào wp-config.phptệp (* Nếu cần, bạn có thể tăng bộ nhớ nhiều hơn 256M) trong hầu hết thời gian.

Một giải pháp khả thi khác có thể là cho phép \wp-content\uploads\thư mục; lệnh : chmod -R 0755 wp-content\uploads\.

Hy vọng nó có thể giúp bạn quá.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.