
PHP has a memory limit configuration that determines the maximum amount of memory a single PHP script can consume.
This memory_limit is usually defined in a php.ini file as follows:
memory_limit = 128M
The default memory_limit configuration for PHP is 128M or 128 Megabytes. You can replace this value in your php.ini file with any other int value.
Without the M symbol, the limit will be measured in bytes:
; 👇 limit to 256 Megabytes
memory_limit = 256000000
; 👇 this is the same
memory_limit = 256M
The memory limit in PHP is calculated on a pre-script basis, meaning that each PHP script request is independent of the other.
For example, if you have 3 running PHP scripts where each consumes 90MB of memory, then the total memory used by PHP will be 270MB passing the 128MB limit.
When you have a single PHP script that consumes 200MB of memory, then PHP will throw an Out of memory fatal error.
To remove the memory_limit, you can set the value as -1 like this:
memory_limit = -1
This way, PHP won’t have memory limitations and can consume all available memory on your server.
Aside from editing the php.ini file, you can also edit the .htaccess file as shown below:
php_value memory_limit 256M
You can get the current memory_limit value with the ini_get() function:
echo ini_get("memory_limit"); //128M
You can also change the memory limit configuration only for a specific script using ini_set() function:
// 👇 set memory limit as 256M using ini_set()
echo ini_set("memory_limit", "256M");
And that’s how you set the memory_limit configuration in PHP.
If you’re using editing the memory_limit for a WordPress site, keep in mind that WordPress has its own memory constants defined as:
WP_MEMORY_LIMITsets the memory limit in WP frontend areaWP_MAX_MEMORY_LIMITsets the memory limit in WP administration area
The WP_MEMORY_LIMIT is usually set at 64MB for WP multisite and 40MB for a single site, while WP_MAX_MEMORY_LIMIT is usually set at 256MB.
You can define these constants in wp-config.php file, below the WP_DEBUG definition as shown below:
define( 'WP_DEBUG', true );
/* Add any custom values between this line and the "stop editing" line. */
define( 'WP_MEMORY_LIMIT', '300M' );
define( 'WP_MAX_MEMORY_LIMIT', '300M' );
WordPress configuration doesn’t override the PHP configuration, so make sure you have memory_limit at 300MB or more when you set WP_MEMORY_LIMIT and WP_MAX_MEMORY_LIMIT at 300MB.
That’s all you need to change for a WordPress site.