Không thể tạo hình thu nhỏ, hình ảnh vừa và lớn


10

Khi sử dụng bản cài đặt mới của Drupal 7.10, tôi đã đặt thư mục để tải lên công khai sites/uploads.

Sau đó, khi tôi thêm một hình ảnh vào một thể hiện nội dung, tôi sẽ nhận được bản gốc được tải lên sites/example.org/files/imagename.pngnhư mong đợi. Tuy nhiên, các hình ảnh khác (hình thu nhỏ, trung bình và lớn) không được tạo tại sites/example.org/styles/*.

Thư mục có thể đọc và ghi được bởi người dùng PHP5-FPM, và do đó, không có quyền vấn đề nào khôn ngoan.

Lý do tại sao điều này xảy ra? Làm thế nào tôi có thể sửa chữa nó?


Nếu bạn đang sử dụng nginx làm máy chủ web, bạn cần một cấu hình bổ sung trong vhost của mình, hãy đọc tại đây để biết thêm thông tin: drupal.org/node/1048570#comment-4047984
Gnuget

Câu trả lời:


13

Đúng vậy, câu trả lời thực tế là tinh tế hơn một chút so với tôi nhận ra. Hóa ra sự imagecachethay thế của D7 cần một số chú ý trong vhost nginx của bạn. Nếu không có 404 được gửi tới Drupal cho các tệp bị thiếu, hình ảnh sẽ không được tạo - điều mà ban đầu tôi không nhận ra, vì tôi cho rằng chúng đã được tạo khi tải lên.

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
}

Nó cần được thêm vào định nghĩa máy chủ của bạn và bạn nên sẵn sàng tung ra. Rõ ràng, đường dẫn có thể cần thay đổi cho thiết lập của bạn, nhưng đối với tôi thì nó là như vậy.


1
Lưu ý rằng phần @rewrite cần được xác định một cách thích hợp ở nơi khác trong tệp cấu hình để phần này hoạt động. Điều đó nói rằng, nó đã thuộc về tôi và điều này cũng giải quyết được vấn đề của tôi, vì vậy cảm ơn jvc26 :)
El Yobo

@ElYobo điểm tốt - đã cập nhật câu trả lời để đảm bảo rằng rõ ràng. Cảm ơn
jvc26

Điều này sẽ ảnh hưởng đến một cấu hình proxy ngược nginx? Tôi đã có cùng một vấn đề và điều này dường như không khắc phục điều đó.
Grizly

Nếu bạn muốn chúng được tạo khi tải lên drupal.org/project/imageinfo_cache, hãy thực hiện điều đó
mikeytown2

Nắm bắt tốt. Điều này cuối cùng dẫn tôi sử dụng tệp máy chủ được đề xuất của nginx thay vì tệp mà DigitalOcean tự động định cấu hình với cài đặt Drupal chỉ bằng một cú nhấp chuột.
Meglio

2

Hãy chắc chắn kiểm tra cả đường dẫn hệ thống tệp công cộng và đường dẫn tạm thời tại admin / config / media / file-system

Khi tôi đã đặt cả hai thư mục đó với quyền chính xác, các thư mục con của tôi sẽ tự động được tạo khi tôi lưu tệp, hình ảnh được lưu và thông báo lỗi sẽ biến mất :-)


2

Trong trường hợp của tôi, sự cố đã gây ra do hình ảnh được tải xuống bằng https,

Tôi đã thêm các dòng sau vào cài đặt trang bảo mật để bỏ qua https trên đường dẫn tệp.

*/files/*

Hy vọng điều này sẽ giúp được ai đó. :)


1

Mặc dù bạn nói rằng bạn đã kiểm tra quyền, nhưng đó vẫn là nơi tôi sẽ bắt đầu, vì tôi thường xuyên gặp phải vấn đề này và gần như luôn luôn là vấn đề về quyền.

Lời khuyên chung: Trước hết, hãy truy cập admin / config / media / file-system và nhấp vào "Lưu cấu hình". Điều này sẽ khiến Drupal đánh giá lại các quyền của các thư mục đã đặt và sẽ cung cấp cho bạn các thông báo lỗi nếu phát hiện sự cố.

Thứ hai: Tôi giả sử rằng bạn có một apache, hoặc dữ liệu www hoặc người dùng khác, sở hữu máy chủ web, trái ngược với người dùng php? Trên hệ thống Linux hoặc Mac, sudo cho người dùng đó. Cố gắng viết một tệp là đúng người dùng , là cách tốt nhất để thực sự đảm bảo rằng bạn có quyền phù hợp. Truy cập trang web / domain.com / files / và gọi "echo data> new_file; cat new_file;" trong một thiết bị đầu cuối. Điều này sẽ xác minh rằng bạn thực sự có thể ghi vào thư mục ghi. Làm tương tự với thư mục tmp của bạn. Hy vọng rằng ai đó khác có thể đề xuất cách thực hiện các hành động tương tự trên một hệ thống như cửa sổ.

Thứ ba: Để loại trừ quyền truy cập thư mục, áp dụng đệ quy 777 thư mục tệp. Bạn có thể khôi phục nhiều quyền hơn sau đó với

find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644

Thứ tư: Đảm bảo rằng thư mục tmp có hoán vị đầy đủ.

Thứ năm: Bạn có thể cần bắt đầu gỡ lỗi mã nếu bạn đã tìm ra nó ngay bây giờ.


Cảm ơn các đề xuất: Đã thử các cách trên, không có lỗi từ Drupal khi thay đổi hệ thống tệp, vì vậy các quyền phải ổn. Tất cả các quy trình PHP đều chạy như người dùng có thể ghi vào thư mục đó, vì vậy người dùng máy chủ web chạy sẽ không tạo ra sự khác biệt về khả năng ghi. Đã kiểm tra quyền thủ công tương thích với ghi. / tmp là như bình thường 777 vì vậy không có vấn đề ghi ở đó. Sự khác biệt đường dẫn đã được sắp xếp là một lỗi của tôi.
jvc26

Để giải quyết, vấn đề là một trong những cấu hình nginx, với các vấn đề về việc chuyển 404 sang Drupal, từ đó kích hoạt việc tạo hình thu nhỏ.
jvc26

1

Để hoàn thành câu trả lời của Letharion, đây là phương pháp tôi đã sử dụng để lấy hình thu nhỏ, phương tiện ... hình ảnh được tạo.

Tôi chính xác rằng lần đầu tiên tôi đã kiểm tra tất cả các điểm được liệt kê ở trên, mà không có kết quả.

Sau đó (trên một hệ điều hành Linux), tôi sửa /usr/local/etc/suphp.conf để thay đổi umask trên php , do đó nó có thể tạo ra các file và thư mục với 755 điều khoản max (nó đã được trên 744 max).

Và điều này chắc chắn đã giải quyết vấn đề. :)


0

Thư viện mã GP Tạo hình thu nhỏ bằng php Khi chúng tôi tải lên hình ảnh kích thước lớn trên máy chủ. Tải lên hình ảnh lớn mất nhiều thời gian hơn để tải trên trang web, vì vậy chúng tôi cần hiển thị hình ảnh kích thước nhỏ trên trang web của chúng tôi. Hình thu nhỏ hình ảnh là một giải pháp để tạo hình thu nhỏ của hình ảnh được tải lên để hiển thị hình ảnh kích thước yêu cầu trên trang web của chúng tôi. http://codel Library.googleplus.co.in/create-thumbnail-image-by-php/


0

Tôi đang dùng Drupal 8.0.3.
Trong trường hợp của tôi, thư mục này không được tạo khi cài đặt.

sites/default/files/field/image

Vì vậy, tôi đặt nó bằng cách sao chép từ phiên bản cũ hơn của cài đặt Drupal.
Tất cả các hình ảnh bao gồm hình thu nhỏ, vừa và lớn hiện đang hiển thị.


-1

Kiểm tra tệp .htaccess của bạn trong thư mục gốc và tệp. Thay thế bằng tệp .htaccess mới nếu cần

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.