PHP sets a limit on how much memory PHP scripts are allowed to use so that a memory-intensive script won't bring down a system. PHP will exit and throw the following error once the limit is reached;

PHP Fatal error: Allowed memory size of xxxx bytes exhausted (tried to allocate yyyy) in yourscript.php

You can increase the memory limit if your PHP scripts require to avoid the error. Some methods to increase the memory limit in PHP are configuring php.ini or .htaccess file and using ini_set() function. cPanel provides the option to configure PHP memory limit from the web interface.

Increase PHP memory limit via file (php.ini)

This method will apply to all the PHP scripts that run in the system. It is a good method to follow if you're not hosting multiple systems in a single host.

  1. Open PHP configuration file using your preferred text editor.
    $ sudo vi /etc/php/7.2/apache2/php.ini
  2. Search for memory_limit directive within the configuration file.
    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit = 128MB
  3. Set the memory limit value with appropriate unit.
    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit = 512MB
  4. Restart your web server for the changes to take effect.

Increase PHP memory limit via .htaccess

To make the setting effective only to a certain folder (or project), you can use the .htaccess file to do the trick. To do this, locate (or create) .htaccess file in your PHP scripts folder and add the following line;

php_value memory_limit 512MB

Increase PHP memory limit via ini_set() function

It is probably the best method as the setting applies only to the particular script and would not allow other poorly written scripts to consume and waste the system's memory.

To do this, add the following line in your PHP script;

ini_set('memory_limit', '512MB');

Increase PHP memory limit for cPanel

You don't have access to PHP's configuration file if you're hosting your system in cPanel, but cPanel do provide the option to change the setting from its admin dashboard.

Discuss the article:

Comment anonymously. Login not required.