2012-02-14 39 views
35

Vì lý do xấu, tôi cần đặt memory_limits cao hơn 1G cho thư mục, nhưng trên PHP 5.2.17 trên máy chủ Lenny khi tôi đặt ví dụ 2048M, tôi chỉ nhận được php.ini giá trị mặc định (256M).PHP: cài đặt memory_limits> 1024M không hoạt động

PHP chạy như một module apache, phpinfo cho chúng ta (đối với thư mục)

memory_limit 1024M 256M 
suhosin.memory_limit 0 0 

Có một hạn chế nào về module apache, hoặc PHP conf? Tôi biết máy chủ chỉ có 4G RAM, nó chỉ là một kịch bản đặc biệt.

+1

Tôi đang trong tình cảnh tương tự ngay bây giờ. Tôi hiểu như vậy: "Vì lý do xấu"! –

Trả lời

76

Bạn đang cố gắng đặt giới hạn bộ nhớ như thế nào? phpinfo() hiển thị giới hạn bộ nhớ dành riêng cho PHP hiện tại, đây là những gì có sẵn do php.ini có giới hạn bộ nhớ

Viết nó vào Apache .htaccess trong thư mục script của bạn có thể hoạt động, nếu máy chủ của bạn hỗ trợ cài đặt PHP lệnh thông qua .htaccess:

php_value memory_limit 2048M 

Vì có thể có các lệnh .htaccess để đặt giá trị PHP bị tắt. Sau đó, bạn cũng có thể thử tính năng này từ mã PHP:

ini_set('memory_limit', '2048M'); 

Nếu cách này không hoạt động và .htaccess cũng không hoạt động thì bạn cần liên hệ với quản trị viên máy chủ.

+1

Tôi sử dụng php_value hoặc ini_set, cùng một vấn đề: nếu tôi đặt 512M ou 1024M, ok, nếu tôi đặt 1500M hoặc 2048M, tôi nhận được 256Mo (giá trị mặc định từ php.ini) –

+1

Trong trường hợp này có vẻ như nằm ngoài PHP tay, giá trị tối đa mà bạn có thể phân bổ hoặc tối đa là 1024M là bao nhiêu? – kingmaple

+0

Chúng ta có thể làm một malloc() của 4.5G. Tôi có hiểu câu trả lời của bạn không? –

-2

Tôi cũng gặp sự cố với các lỗi này, với việc nhập tệp XLS vào DB.

Giải pháp là ini_set('memory_limit', '2048M'); áp dụng lệnh này trực tiếp trong tệp có vấn đề.

Ví dụ: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php

+4

Vâng, câu trả lời khác đã nói như vậy. Câu trả lời của bạn hữu ích như thế nào? –

12

Tôi có cùng vấn đề này khi tôi cần tập lệnh PHP để sử dụng 4 GB RAM. Lý do không quan trọng. Mục tiêu là đặt giới hạn 4 GB cho PHP.

Ý tưởng ban đầu là sử dụng ini_set('memory_limit', '4096M'); nhưng tôi thấy rằng điều này không hiệu quả. Tôi không có ý tưởng làm thế nào hoặc tại sao phải trung thực, nhưng đó không phải là quan trọng với tôi vào thời điểm đó. Tôi đang sử dụng một hệ thống có RAM 32 GB, điều đó là có thể.

Tôi thấy rằng thiết lập giới hạn 1 MB ít hoạt động hiệu quả hơn, đó là giải pháp phù hợp với tôi.

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB 

Sửa Tháng Mười Một '16: Thực ra, tôi chưa bao giờ thực sự chơi với nó trước nhưng tôi đã nhận thấy trên hệ thống của tôi rằng giá trị này dường như để loại bỏ hoàn toàn tất cả các giới hạn bộ nhớ cho tôi. Tôi có thể sử dụng RAM nhiều như hệ thống của tôi có thể cung cấp.

+0

bạn có nhận được lý do tại sao 4096mb không hoạt động? Nó đã xảy ra với tôi trên php 7. lỗi này "" (idk nếu nó là lỗi) đã không hiển thị bất kỳ điều trên trang không phải là lỗi. Tôi đã đặt cũng error_reporting. –

16
ini_set("memory_limit",-1); 

này thường nên loại bỏ giới hạn

+6

đặt một giá trị âm (-1) nghĩa là nó có thể chiếm nhiều không gian tùy thuộc vào dung lượng bộ nhớ thực tế của máy được sử dụng –

+5

Đây là một thực tế rất xấu trong môi trường sản xuất thực. – walther

+0

@walther, tại sao bạn lại nói vậy? Nó có hoạt động hay không? – pollux1er

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