2012-02-22 27 views
33

Tôi đang sử dụng WAMP trong máy cục bộ của mình, khi MẪU (phương thức = "POST") với 2000 trường nhập được gửi, tôi chỉ có thể đọc 1001 biến _POST. Ví dụ: Với trình gỡ lỗi Netbeans, tôi có thể thấy rõ kích thước _POST luôn là 1001 nếu có hơn 1001 trường nhập trong biểu mẫu.Làm thế nào để tăng biến POST tối đa trong PHP?

Tôi đã sử dụng mã Java này http://ideone.com/GAw14 để tạo biểu mẫu có N trường nhập và được kiểm tra.

Điều tương tự cũng hoạt động tốt ở một máy khác (WAMP), nơi tôi có thể xem tất cả các biến POST.

Hãy giúp tôi giải quyết vấn đề của mình.

+1

Tại sao không lấy php.ini từ máy khác và so sánh nó với máy hiện tại của bạn và xem những gì nên được đặt cho các biến 'post_max_size' etc? –

+0

Bạn đang sử dụng Suhosin (Hardened PHP)? – jprofitt

+0

Tôi không biết nếu đó là php hoặc trình duyệt web giới hạn ... –

Trả lời

76

PHP 5.3.9 đã giới thiệu tùy chọn cấu hình max_input_vars, được đặt mặc định thành giá trị 1000. Kiểm tra phần Runtime Configuration của hướng dẫn sử dụng PHP. Giá trị mặc định và nhật ký thay đổi nằm ở đầu trang.

Giá trị có thể được thay đổi bằng cách cập nhật php.ini của máy chủ, thêm tệp .htaccess hoặc adding a line to httpd.conf.

+0

Hoàn hảo !!! Cảm ơn bạn đã đúng :) –

+1

Tín dụng đi đến một đồng nghiệp có vấn đề này chỉ ngày hôm qua và sau đó là tốt đẹp, đủ để chia sẻ phát hiện của mình Với nhóm nghiên cứu :) – lightster

+1

Đối với ai đó tìm kiếm trong tương lai, tôi thấy rằng máy chủ cPanel mặc định là 2013-03-15 giới hạn số biến đầu vào là 512. Một số tập lệnh của chúng tôi đã vượt qua đáng kể hơn và thêm max_input_vars vào php .ini đã khắc phục sự cố. –

-1

Tôi nghi ngờ vấn đề là với lượng dữ liệu đến với yêu cầu POST của bạn. Không có thiết lập giới hạn số lượng $ _POST vars có thể được thiết lập. Tuy nhiên, có một giới hạn bộ nhớ cho dữ liệu POST là 8MB theo mặc định.

Trong tệp php.ini của bạn, hãy thử sửa đổi giá trị post_max_size và đặt giá trị cao hơn. Đừng quên khởi động lại apache sau khi thay đổi được thực hiện.

+0

Tôi đã sửa đổi post_max_size thành 81M cũng 0 và WAMP khởi động lại vẫn còn tồn tại vấn đề. –

17

Nếu bạn đang sử dụng Suhosin với PHP đã được khắc phục, bạn có thể gặp giới hạn biến tối đa mà nó áp đặt. Trong php.ini của bạn, bạn chỉ có thể thêm

[suhosin] 
suhosin.request.max_vars = 1000 
suhosin.post.max_vars = 1000 

thay đổi 1000 thành bất kỳ thứ gì bạn muốn và khởi động lại máy chủ web của bạn.

Tôi đã truy cập trang này trên trang Quyền của Drupal khi có nhiều mô-đun được cài đặt với số lượng vai trò lớn, dẫn đến nhiều hộp kiểm. Nó sẽ chỉ tiết kiệm một số lượng nhất định của họ trước khi bất cứ điều gì sau khi sẽ chỉ bị bỏ qua. Có vẻ như điều này có lẽ không phải là vấn đề của bạn, nhưng vì có khả năng một người nào đó trong tương lai có thể vấp ngã khi tìm kiếm thứ gì đó liên quan tôi sẽ tiếp tục và ném nó vào. khi tôi bị bối rối.

+0

Cảm ơn. Tôi không dùng Suhosin. –

+1

Không có suhosin cho php5.4 hoặc php5.5: ( – ZiTAL

0

Tôi đã giải quyết được sự cố này. Mở file cấu hình php.ini và thêm những dòng này

[Suhosin]

suhosin.post.max_vars = 20000

suhosin.request.max_vars = 20000

3

tôi giải quyết tối đa $ _POST của tôi đầu vào -problem bằng cách thêm dòng sau vào php.ini:

max_input_vars = 5000 
suhosin.request.max_vars = 5000 
suhosin.post.max_vars = 5000 

Lưu ý suhosin.request.max_vars cũng có.

+0

'max_input_vars' hoàn toàn phù hợp với trường hợp của tôi :) – Vineet

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