Chuyển đến nội dung

Ảnh WordPress không hiện hoặc lỗi HTTP khi tải lên? Cách sửa

Ảnh vỡ, thiếu ảnh thu nhỏ, hoặc "HTTP error" khi tải lên? Kiểm tra URL ảnh, cache, tệp, giới hạn tải lên, thư viện xử lý ảnh và quyền thư mục.

Designer working on a website layout at a desktop computer

Ảnh trên WordPress của bạn ngừng hoạt động. Có thể Thư viện Media hiện ô xám thay vì ảnh thu nhỏ, trang hiện biểu tượng ảnh vỡ, hoặc lần tải lên thất bại với “HTTP error” chung chung hoặc “The server cannot process the image”. Các sự cố này trông giống nhau nhưng nguyên nhân khác nhau, nên trước hết hãy xác định bạn đang gặp loại nào.

Hướng dẫn này gồm hai tình huống chính: ảnh đã có nhưng không hiển thị, và lần tải lên mới bị lỗi.

Trước hết: bạn đang gặp vấn đề nào?

  • Ảnh cũ biến mất trên website, nhưng tải lên vẫn được: thường là vấn đề URL sau khi chuyển website hoặc đổi sang HTTPS, sự cố cache hoặc lazy-loading, hoặc thiếu tệp. Bắt đầu từ Bước 1.
  • Lần tải lên mới lỗi với “HTTP error” hoặc thông báo tương tự: thường là giới hạn máy chủ, xử lý ảnh, hoặc quyền tệp. Nhảy tới Bước 5.
  • Chỉ thiếu ảnh thu nhỏ trong Thư viện Media: thường là thiếu kích thước ảnh hoặc sai quyền. Xem Bước 4 và Bước 7.

Bước 1: Kiểm tra URL của ảnh

Nhấp chuột phải vào ảnh bị vỡ và chọn Open image in new tab (hoặc Copy image address). Xem URL:

  • URL trỏ tới tên miền cũ hoặc website staging, chẳng hạn staging.yoursite.com hoặc oldsite.com: website đã được chuyển mà chưa cập nhật URL ảnh trong cơ sở dữ liệu.
  • URL bắt đầu bằng http:// trong khi website dùng https://: trình duyệt chặn hoặc cảnh báo đây là mixed content.
  • URL mở trang 404: tệp không còn trên máy chủ, hoặc đường dẫn sai.
  • URL mở trang 403 Forbidden: quyền hoặc một quy tắc bảo mật đang chặn.

Bước 2: Sửa URL ảnh cũ hoặc URL HTTP

Nếu URL trỏ tới tên miền cũ hoặc tới http://, hãy thay chúng trong cơ sở dữ liệu. Đừng dùng tìm và thay văn bản thuần trên tệp SQL, vì WordPress lưu một phần dữ liệu ở định dạng serialized, và định dạng này hỏng nếu độ dài thay đổi. Hãy dùng công cụ xử lý được việc này:

  • Plugin như Better Search Replace. Chạy dry run trước để xem sẽ có bao nhiêu thay đổi.
  • WP-CLI, an toàn với dữ liệu serialized và chạy nhanh:
wp search-replace 'http://oldsite.com' 'https://yoursite.com' --all-tables --dry-run

Bỏ --dry-run để áp dụng thay đổi, sau khi đã sao lưu cơ sở dữ liệu. Với riêng vấn đề HTTPS, hướng dẫn sửa mixed content sau khi chuyển sang HTTPS của chúng tôi đi qua từng bước.

Bước 3: Xóa cache và thử lazy loading

Tối ưu ảnh, lazy-loading và tính năng CDN có thể khiến ảnh không hiện khi cấu hình sai hoặc sau một lần cập nhật:

  • Xóa cache của plugin cache, cache máy chủ và cache CDN, rồi kiểm tra trong cửa sổ trình duyệt riêng tư.
  • Tạm tắt lazy loading, chuyển đổi WebP, hoặc “CDN URL rewriting” trong plugin tối ưu, rồi tải lại. Nếu ảnh hiện lại, điều chỉnh cài đặt đó hoặc loại trừ các ảnh bị ảnh hưởng.
  • Nếu bạn dùng CDN, kiểm tra URL của CDN vẫn hoạt động và origin trỏ đúng máy chủ hiện tại.
  • Mở console trình duyệt (F12, rồi Console). Một lỗi JavaScript có thể ngăn script lazy-loading thay bằng ảnh thật.

Bước 4: Kiểm tra tệp có còn không

Mở wp-content/uploads trong File Manager hoặc qua SFTP và tìm thư mục năm và tháng khớp với ảnh bị vỡ. Nếu thiếu tệp, chúng không được sao chép khi chuyển website, hoặc có gì đó đã xóa chúng. Hãy khôi phục thư mục uploads từ bản sao lưu hoặc từ máy chủ cũ.

Nếu tệp gốc còn nhưng thiếu ảnh thu nhỏ, hãy cài Regenerate Thumbnails, hoặc chạy lệnh này bằng WP-CLI:

wp media regenerate --only-missing

Bước 5: Sửa “HTTP error” khi tải lên

Thông báo “HTTP error” che mất vấn đề thật. Hãy thử lần lượt:

  • Thử lại và làm mới. Đăng xuất, đăng nhập lại, rồi thử lần nữa. Phiên hết hạn có thể gây một lần thất bại đơn lẻ.
  • Thử ảnh nhỏ hơn. Thu ảnh còn khoảng 2000 pixel chiều ngang rồi thử lại. Nếu tải lên được, máy chủ đang gặp khó với ảnh lớn.
  • Kiểm tra tên tệp. Đổi tên tệp thành tên đơn giản gồm chữ, số và dấu gạch ngang, chẳng hạn team-photo.jpg. Một số ký tự đặc biệt gây sự cố.
  • Kiểm tra giới hạn tải lên. Media → Add New hiện kích thước tải lên tối đa. Nếu tệp của bạn lớn hơn, hãy tăng upload_max_filesize và post_max_size trong phần cài đặt PHP của bảng điều khiển hosting.
  • Tăng giới hạn bộ nhớ. Thu nhỏ ảnh lớn cần bộ nhớ. Xem hướng dẫn sửa lỗi allowed memory size exhausted của chúng tôi.
  • Tắt các plugin xử lý ảnh lúc tải lên, như plugin tối ưu hoặc đóng dấu nước, rồi thử lại.
  • Xem nhật ký lỗi. Nhật ký lỗi của nhà cung cấp hosting hoặc nhật ký gỡ lỗi WordPress thường cho thấy nguyên nhân thật, chẳng hạn hết thời gian chờ hoặc lỗi thư viện ảnh PHP.

Bước 6: Kiểm tra thư viện ảnh trên máy chủ

WordPress thu nhỏ ảnh bằng extension PHP Imagick hoặc GD. Vào Tools → Site Health → Info → Media Handling để xem cái nào đang được dùng. Nếu không có cái nào, hãy nhờ nhà cung cấp hosting bật một trong hai. Nếu đang dùng Imagick mà ảnh lớn tải lên thất bại, Imagick có thể bị giới hạn bởi tài nguyên máy chủ. Bạn có thể yêu cầu WordPress dùng GD bằng cách thêm đoạn sau vào một plugin tùy chỉnh nhỏ hoặc plugin code snippets:

add_filter( 'wp_image_editors', function () {
	return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
} );

Việc tải lên WebP và AVIF cũng phụ thuộc vào hỗ trợ của máy chủ. Nếu WebP tải lên thất bại nhưng JPEG thì được, thư viện ảnh của máy chủ có thể không hỗ trợ WebP. Nhà cung cấp hosting có thể cho bạn biết.

Bước 7: Kiểm tra quyền thư mục

WordPress phải ghi được vào wp-content/uploads và các thư mục năm, tháng bên trong. Thư mục thường nên là 755 và tệp 644. Nếu tải lên thất bại với “Unable to create directory” hoặc “Is its parent directory writable by the server?”, quyền hoặc quyền sở hữu tệp đang sai, điều hay gặp sau khi chuyển website. Đừng đặt 777; hãy nhờ nhà cung cấp hosting sửa quyền sở hữu.

Cũng kiểm tra Settings → Media và, trên website cũ, cài đặt upload_path. Nếu tệp tải lên đi vào thư mục không mong đợi, có thể đang đặt một đường dẫn tùy chỉnh cũ.

Khi nào nên nhờ chuyên gia

Hãy nhờ giúp nếu ảnh biến mất sau khi chuyển website và bạn không còn tệp gốc, nếu một lần tìm và thay sẽ đụng tới hàng nghìn dòng mà bạn chưa có bản sao lưu đã kiểm tra, hoặc nếu tải lên vẫn thất bại sau khi bạn đã tăng các giới hạn. Những trường hợp này thường cần quyền vào nhật ký và cài đặt máy chủ mà chỉ lập trình viên hoặc nhà cung cấp hosting mới đổi an toàn được.

Muốn ảnh trở lại mà không phải đoán? Dịch vụ WordPress Fix tìm lý do ảnh mất hoặc tải lên thất bại, sửa URL an toàn, khôi phục ảnh thu nhỏ và chỉnh cài đặt máy chủ. Giá cố định $45, được xác nhận trước khi làm bất kỳ việc gì, kèm Cam kết dịch vụ. Yêu cầu sửa.

Câu hỏi thường gặp

Vì sao ảnh hiện trong trình soạn thảo nhưng không hiện trên website?

Điều này thường do cache, lazy loading hoặc CDN. Trình soạn thảo tải ảnh trực tiếp, còn trang công khai đi qua các lớp đó. Hãy xóa cache và thử khi đã tắt lazy loading.

Tạo lại ảnh thu nhỏ có làm đổi ảnh của tôi không?

Việc này tạo lại các bản thu nhỏ từ tệp gốc bạn đã tải lên. Tệp gốc không bị đổi. Với thư viện lớn, quá trình có thể mất một lúc, nên hãy chạy lúc website vắng.

Tôi có tải được ảnh HEIC từ iPhone không?

Khả năng hỗ trợ phụ thuộc phiên bản WordPress và thư viện ảnh của máy chủ. Nếu ảnh HEIC tải lên thất bại, hãy chuyển ảnh sang JPEG hoặc đặt iPhone lưu ảnh ở định dạng “Most Compatible”.

Vẫn đang kẹt? Chúng tôi có thể sửa giúp bạn

Cho chúng tôi biết chuyện đang xảy ra. Chúng tôi xác nhận phạm vi và giá trước khi bất kỳ công việc nào bắt đầu.