2010-09-15 40 views
8

Trong một trang web CakePHP của tôi, tôi gặp phải lỗi này.Yêu cầu pháp nhân quá lớn PHP

Yêu cầu pháp nhân quá lớn

Tôi không biết vấn đề là gì. Tôi nghĩ rằng dữ liệu mà tôi đăng thông qua biểu mẫu quá lớn. Tôi đã tìm kiếm điều này trong công cụ tìm kiếm và nhận được rằng tôi sẽ phải tăng post_max_size. Được mặc định tôi nghĩ rằng nó được thiết lập để 8M.

Nhưng không biết cách tăng post_max_size trong CakePHP và phải làm gì?

Cảm ơn.

Trả lời

15

post_max_sizeupload_max_filesize là cài đặt PHP.ini. Bạn có thể đặt chúng trực tiếp trong PHP.ini hoặc qua ini_set. Tôi không biết nếu điều này có thể được thiết lập với một số công cụ bánh bên trong là tốt.

Tuy nhiên, lỗi cũng có thể do một số set limit of the RequestBodyLength in Apache gây ra (giả sử bạn đang chạy dưới Apache).

+3

Thêm vào đó, ở khắp mọi nơi mà bails Apache với 'HTTP_REQUEST_ENTITY_TOO_LARGE', có một tuyên bố đăng nhập, vì vậy cần có một mô tả chính xác những gì xúc phạm Apache về kích thước của yêu cầu trong nhật ký lỗi. –

+0

Có. Nhưng trong CakePHP, trong tập tin nào tôi sẽ phải thiết lập nó bằng cách sử dụng ini_set? – gautamlakum

+0

@lakum Trong tệp bootstrap. Nhưng như Travis chỉ ra dưới đây, một số giá trị ini không thể được thiết lập khi chạy. Tôi đã kiểm tra nếu điều này áp dụng cho 'post_max_size' và' upload_max_filesize'. – Gordon

1

Tôi nghĩ bạn cần phải đặt nó trong tệp cấu hình PHP, php.ini. Nếu bạn có quyền truy cập cấp độ VPS/root, chỉ cần tăng kích thước trên đó. Nếu bạn không (chia sẻ lưu trữ), bạn có thể sửa đổi các thông số ini php trong thời gian chạy. Lưu ý rằng ini_set() sẽ không hoạt động ở đây, vì các cài đặt PHP được tải quá muộn (sau khi tệp đã được tải lên, tập lệnh PHP bắt đầu thực hiện).

Bạn sẽ cần phải bao gồm những điều sau đây trong tập tin htaccess của bạn (trên chia sẻ lưu trữ):

php_value post_max_size 104857600 

Có thể điều này sẽ không làm việc. Một số googling xung quanh làm cho nó có vẻ như là mặc dù một số máy chủ chia sẻ sẽ khóa xuống thiết lập này, làm cho nó không over-rideable trong htaccess (chỉ trong cấu hình máy chủ chính). Nếu đúng như vậy, bạn cần di chuyển máy chủ.

0

Đôi khi trên chia sẻ lưu trữ, bạn có thể thêm tệp php.ini của riêng mình - chỉ cần sao chép các bit có liên quan ra khỏi bất kỳ tệp mặc định nào (hoặc google cho một tệp).

Đó không phải là lỗi mà tôi đã thấy trước đây - có thể như Gordon nói, là Apache.

Đừng ngại hỏi nhóm hỗ trợ lưu trữ - Tôi luôn thấy chúng rất hữu ích (tôi nghĩ chúng phải cô đơn) và thường chúng sẽ thay đổi cấu hình cho bạn.

Chắc chắn đây không phải là vấn đề về CakePHP.

7

Tôi đã thử tất cả các câu trả lời này và điều duy nhất làm việc cho tôi là điều chỉnh Kích thước bộ đệm SSL. Bạn có thể đặt điều này bằng ...

<Directory /my/blah/blah> 
... 
    # Set this to something big big... 
    SSLRenegBufferSize 10486000 
... 
</Directory> 

... và sau đó chỉ cần khởi động lại Apache để có hiệu lực. (Tìm thấy điều này tại: http://forum.joomla.org/viewtopic.php?p=2085574)

+0

Chỉ cần thay đổi để yêu cầu SSL. Điều này giải quyết nó. – zachswain

5

Một nguyên nhân khác có thể xảy ra đối với lỗi "yêu cầu đối tượng 413 quá lớn" là an toàn mod. Đó là nguyên nhân của tôi.

Nhìn vào bản ghi lỗi Apache của trang web cho biết:

ModSecurity: Yêu cầu cơ thể không tạo các file dữ liệu chiều dài lớn hơn giới hạn cấu hình (131.072) ..Deny với mã (413)

Trên Ubuntu 14.04 của tôi tập tin cấu hình là ở đây nhưng điều này thực sự phụ thuộc vào hệ thống:

/etc/modsecurity/modsecurity.conf

Có là giá trị mặc định cho SecRequestBodyNoFilesLimit (và có thể cũng là SecRequestBodyInMemoryLimit).

0

Chắc chắn không CakePHP vấn đề nhưng ở đây là hai cài đặt bạn cần phải thiết lập để upload file đúng:

vim /etc/php5/php.ini (or wherever the .ini is located) 

Và thiết lập:

post_max_size="200M" 
upload_max_filesize="200M" 

Bây giờ là phần khó khăn trong trường hợp bạn sử dụng HTTPS! bạn cũng cần định cấu hình một SSL.

vim /etc/apache2/sites-available/<whatever>-443.conf 

Và thiết lập các SSLRenegBufferSize

<Directory /appdata/www/<whatever>/web> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    allow from all 
    SSLRenegBufferSize 201048600 
</Directory> 
Các vấn đề liên quan