12

I have tried setting the limit in php.ini but I always get the same error:

Allowed memory size of 262144 bytes exhausted (tried to allocate 341351 bytes) in Unknown on line 0

I can work around this by calling php -d memory_limit=2048M script.php

But can't figure out what to do with composer.

4
  • 1
    PHP sometimes uses a different php.ini file for the CLI vs the web server. Use php -i to find out which php.ini file it is loading on the CLI and set your memory_limit there. The ini in use should be near the beginning of the output. Commented Apr 21, 2017 at 17:47
  • See also stackoverflow.com/questions/1751719/… Commented Apr 21, 2017 at 17:51
  • As others have said I get this error all the time increase your mem limit by setting it to -1 then do what you are doing and change it back to something more sensible when you are done. Commented Dec 23, 2020 at 15:31
  • Oh and also make sure you are changing the system value as the root user in whm as the cpanel user will not allow you to override more than this Commented Dec 23, 2020 at 15:32

3 Answers 3

17

As PHP-CLI has a different ini file, this often leads to misconfiguration.

What we can do, for a «unix shebang» PHP shell script, is to set ini keys on the fly directly on the shebang line, like so:

#!/usr/bin/php -d memory_limit=512M
<?php
phpinfo();
exit;

Then to see if php had understood, using phpinfo():

./myphpProg | grep memory

Correct shell output should contain:

memory_limit => 512M => 512M

man php

-d foo[=bar] Define INI entry foo with value bar


Without using the Unix shebang mechanism, we can similarly pass one (or many) -d arguments in the command line, or a dedicated start-up script:

php -d memory_limit=512M myphpProg
Sign up to request clarification or add additional context in comments.

Comments

4

Add this at the very top your code of PHP ini_set("memory_limit", "2048M"); in your PHP script. Make sure to increase memory_limit according to your need.

If you keep on getting this kind of error message of exhausted memory. you can use ini_set("memory_limit", "-1");. This will set your memory limit to no limit.

Note: This will set your memory limit to no limit. Memory limit is the thing which is dependent on your OS and RAM not on PHP.

Note: Also please make sure if you are doing something on your production environment in your PHP script, whose job is to keep on adding data to there script, either in your static variables(Example: gathering multiple CSV's data) or some arrays, then it can lead to either failure of that VM or PHP process in case of complete memory exhaust.

Comments

2

The default php.ini file for the CLI in xampp is located in %xamppRoot%\php\php.ini not under %xamppRoot%\apache\bin\php.ini

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.