php
memory
ai_generated
true
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes)
ID: php/memory-limit-exhausted
88%Fix Rate
91%Confidence
120Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 83 | active | — | — | — |
Root Cause
Memory exhaustion in PHP typically results from loading large datasets into memory at once, infinite loops, circular references, or insufficient memory_limit configuration. The fix depends on whether the root cause is a code issue or a configuration issue.
genericWorkarounds
-
91% success Use generators or chunked processing for large datasets
Replace array-based data loading with PHP generators (yield) or process data in chunks. For database queries, use cursor-based pagination or LIMIT/OFFSET. For file processing, use fgets() line-by-line instead of file_get_contents().
-
87% success Profile memory usage to find the leak and set an appropriate memory_limit
Use memory_get_usage() and memory_get_peak_usage() at key points to identify where memory grows. Check for circular references and unset large variables when no longer needed. Then set memory_limit to a reasonable value (e.g., 256M) in php.ini.
Dead Ends
Common approaches that don't work:
-
Continuously increasing memory_limit in php.ini without investigating root cause
72% fail
Simply raising memory_limit masks the underlying problem. If the code has a memory leak or loads unbounded data, the error will return with larger datasets. Eventually system OOM killer may terminate the process.
-
Using ini_set('memory_limit', '-1') in production code
80% fail
Setting unlimited memory in production risks crashing the entire server when a runaway process consumes all available RAM. This is a dangerous workaround that can cause cascading failures.
Error Chain
Leads to:
Preceded by:
Frequently confused with: