2011-10-13 31 views
34

Trong máy chủ trang web của tôi, tôi đã thấy (thông qua phpinfo) màPHP post_max_size đè upload_max_filesize

  • post_max_size = 8Mb
  • upload_max_filesize = 16Mb

Điều này dẫn tôi nghĩ rằng tôi nên có thể tải lên ở dạng tệp lớn tới 16Mb. Tuy nhiên, khi tôi làm điều này thông qua một phương pháp bài (như bình thường), post_max_size mất hơn và tuyên bố rằng tôi đã gửi quá nhiều.

Phương pháp cho phép gửi tệp lớn tới 16Mb là gì? GET - PUT - khác?

Hy vọng ai đó có thể làm rõ điều này cho tôi.

Simon

Trả lời

9

Các phương pháp thông thường để gửi một tập tin tải lên là POST, do đó cũng post_max_size nên là 16 Mb trở lên.

Ngẫu nhiên, cũng memory_limit đóng một vai trò. Nó phải lớn hơn 16Mb, nhưng vì giá trị mặc định là 128Mb, bạn sẽ không thấy vấn đề này. Ví dụ php.ini cấu hình:

post_max_size = 16M 
upload_max_filesize = 16M 
memory_limit = 128M 

Thay đổi các giá trị trong php.ini nếu bạn đã truy cập vào nó, nếu không bạn có thể thử thay đổi chúng trong một tập tin .htaccess.

php_value upload_max_filesize 16M 
php_value post_max_size 16M 

Điều này sẽ chỉ hoạt động nếu cài đặt AllowOverride cho phép. Nếu không, bạn đã yêu cầu công ty lưu trữ của bạn.

19

Bằng cách tải lên tệp POST được thực hiện (thông thường, cũng có các phương pháp khác). Nhìn vào các thuộc tính phương pháp hình thức, trong đó có lĩnh vực tập tin tải lên;)

Giới hạn thấp nhất của bất kỳ thiết lập liên quan thay thế cho một thiết lập cao hơn:

Xem Handling file uploads: Common Pitfals giải thích chi tiết điều này và cách tính giá trị.

66

upload_max_filesize là giới hạn của bất kỳ tệp nào. post_max_size là giới hạn của toàn bộ nội dung yêu cầu, có thể bao gồm nhiều tệp.

Cho post_max_size = 20Mupload_max_filesize = 6M bạn có thể tải lên tối đa 3 tệp 6M mỗi tệp. Nếu thay vào đó, post_max_size = 6Mupload_max_filesize = 20M thì bạn chỉ có thể tải lên một tệp 6M trước khi nhấn post_max_size. Nó không giúp đỡ để có upload_max_size>post_max_size.

Không rõ ràng cách nhận ra khi đi qua post_max_size. $_POST$_FILES sẽ trống, nhưng $_SERVER['CONTENT_LENGTH'] sẽ là> 0.Nếu khách hàng không tải lên bất kỳ biến hoặc tệp bài đăng nào, thì $_SERVER['CONTENT_LENGTH'] sẽ là 0.

5

Cài đặt cấu hình máy chủ của bạn cho phép người dùng tải lên tệp tối đa 16MB (vì bạn đã đặt upload_max_filesize = 16Mb) nhưng post_max_size chấp nhận dữ liệu bài đăng tối đa 8MB. Đây là lý do tại sao nó ném một lỗi.

Phần trích dẫn từ official PHP site:

  1. Để tải file lớn, giá trị post_max_size phải lớn hơn upload_max_filesize.

  2. memory_limit nên lớn hơn post_max_size

Bạn nên luôn luôn đặt giá trị post_max_size của bạn lớn hơn giá trị upload_max_filesize.

Các vấn đề liên quan