How do I increase PHP memory limit on Ubuntu 14.04

May 17, 2015 39.4k views
PHP LEMP Ubuntu

Hi

I am using a 1GB Droplet with current kernel: Ubuntu 14.04 x64 vmlinuz-3.13.0-24-generic (1221)

Using phpinfo() I have identified the currently loaded php.ini file, and have updated the memory_limit attribute to 512M from 128.

This file is /etc/php5/fpm/php.ini

Despite making this change (and of course restarting nginx and php5-fpm services - as well as rebooting the entire server after each change), the value shown in phpinfo() remains at 128M

Other things I've tried (again, have rebooted/restarted services):

  • Adding the following values to /etc/php5/fpm/php-fpm.conf
php_admin_value[memory_limit] = 512M
php_value[memory_limit] = 512M
  • Adding a user.ini file in /etc/php5/fpm/conf.d/ (as this directory is scanned for other config files) - and adding the memory_limit with 512M memory

  • Editing /etc/php5/cli/php.ini to the same 512M value, even though this file isn't being used.

  • Adding a php.ini file with the updated memory_limit value inside the root of the web site's directory

I am absolutely stumped, and if someone can offer any insights or further troubleshooting steps, I would be greatly appreciative!

Thanks

4 Answers

Hi smarterdigitalltd,

What version of php are you using exactly?

I'm not sure what the problem is, but I thought the following might help:

  • If you're making modification to many php.ini, just stick to the one phpinfo() shows.
  • If there is a syntax error within php.ini, it might not parse the rest of th file.
  • It seems possible to change the memory limit from .htaccess
  • Maybe increase post_max_size?
  • Compare php -i with phpinfo()
  • Look for other instances of memory_limit inside php.ini
  • Is it possible to check some sort of php logs to look for potential errors?
  • The suhosin extension is known to limit memory settings. Check if you use it.
  • Try initset e.g. ```iniset("memory_limit","256M");```
  • Try lowering it first, to see if there's any changes.

Hope this helps.

Hi Enigma

Wow - great tips; thanks for sending such a detailed list.

So, to answer your questions in order:

  • Yep, I put the other ini files back to default.
  • Item I downloaded another php.ini from a working droplet that uses the same image - no luck.
  • No luck with .htaccess
  • No luck with postmaxsize
  • I'm not sure if you mean changing the post_max_size will have an impact on memorylimit, but when I change the `postmax_size` value in the same PHP.ini file, it is reflected in phpinfo()
  • Interestingly, no - php -i returns /etc/php/cli/php.ini - however I tried editing this file previously with no luck.
  • No other instances of memory_limit
  • I've checked the logs, and they look clear - other than a recurring notice:

[17-May-2015 16:44:57] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful

  • I couldn't find much information as to where I should look for this extension so I tried to uninstall it, and I was told that it didn't exist.
  • No luck
  • Yes I tried lowering to 64M - no change
  • My PHP version is 5.5.9-1ubuntu4.9

So other than point 6 - where the php.ini files don't reconcile, it all seems to check out OK. Perhaps I have to check out the suhosin stuff more, but as I said - I didn't have much luck finding out how to configure this. Any other thoughts or pointers are of course welcomed!

Regards

  • Ok, maybe a few more things to try:

    • Try setting memory_limit = -1
    • Just to confirm, have you tried: ini_set('memory_limit', '128M');
    • So the memory limit seems fixed, e.g. you tried both increasing and lowering it to no avail, right?
    • It's obvious, put you're actually writing it like this: memory_limit = 128M (with the M at the end)
    • Can you try echoing the memory_limit? : php -r "echo ini_get("memory_limit").PHP_EOL"
    • Maybe try telling apache to use a specific php.ini file. (Look under Finding the path of the php.ini file)
    • I don't think safe_mode still exists for this version of php, but perhaps it's set somewhere (I'm being a bit desperate now)

    Let me know how it goes.

Maybe it's too late but just for reference as I wasted three hours trying to increase the memory limit for Magento.

Turns out that this was set in the .htaccess file for the virtual host.

I found it was because memory_limit appeared multiple times in the php.ini 😑 Not sure why - the whole contents repeated 3 times in the one file.

Have another answer? Share your knowledge.