Tôi vừa thừa hưởng một trang web có tập lệnh PHP luôn chạy hết bộ nhớ ở mức 117 MB. Điều này xảy ra ngay cả khi tôi tăng biến memory_limit của PHP lên 312 MB, mà tôi đang thực hiện thông qua php.ini.Lỗi hết bộ nhớ PHP mặc dù memory_limit không đạt được
Điều này hiện được giải quyết nhờ có một đầu mối tuyệt vời từ pcguru. Xem câu trả lời của tôi dưới đây bắt đầu: tôi cuối cùng đã tìm thấy câu trả lời
ini_get('memory_limit')
trả về giá trị thiết lập trong php.ini, vì vậy tôi chắc chắn Apache đã khởi động lại sau khi thay đổi giá trị. Tôi đang sử dụng memory_get_usage(true)
để trả lại bộ nhớ được tiêu thụ bởi tập lệnh tại các điểm khác nhau trên đường đi. Và nó liên tục thất bại khi nó đạt đến 117 MB.
Có một số giới hạn PHP nội bộ mà tôi không biết rằng nó có bao giờ phân bổ hơn 117MB cho một tập lệnh riêng lẻ không?
Máy chủ có RAM 1 GB và đang chạy CentOS. Tôi có quyền truy cập trình bao gốc. PHP là phiên bản 5.3.18. MySQL là phiên bản 5.1.66-cll.
Tập lệnh này nằm sau tên người dùng/mật khẩu và tôi không thể cung cấp quyền truy cập công khai vào nó.
Đã chỉnh sửa để thêm:
1) Cảm ơn tất cả sự giúp đỡ của bạn cho đến nay. Bạn sẽ tìm thấy thêm thông tin trong các trả lời của tôi cho các nhận xét của người dùng cụ thể theo các câu trả lời khác nhau bên dưới.
2) Suhosin chắc chắn chưa được cài đặt. Tôi đã kiểm tra ở nhiều nơi bao gồm chạy một tập lệnh và kiểm tra các hằng số và chạy php -v
3) Nhật ký apache không có bản ghi của thông báo lỗi cụ thể mà tôi nhận được. Ghi nhật ký được bật trong php.ini. Tôi đường ống qua grep để tìm kiếm toàn bộ nhật ký.
4) Có thể xảy ra lỗi sai trong trường hợp này không?
Lỗi chính xác mà bạn thấy là gì? Có lẽ bạn đang bối rối bởi "cố gắng phân bổ xxx byte" –
Kudo để có phiên bản PHP 5.3 cập nhật. –
Bạn có miếng dán suhosin nào không? – DaveRandom