php cli memory limit
Solution 1
IIRC, an unlimited memory_limit isn't supported by the CLI (I'll try to find a source for this) but for now, try passing it into the command:
php -d memory_limit=128M my_script.php
UPDATE
Apparently I was dreaming about the unlimited memory_limit not being supported for php cli. Regardless, it looks like the value from the ini is ignored. The simplest solution should then be to specifically set it in the php command calling the script.
UPDATE2
To answer the question of where the memory limit is coming from, it's most likely being set in the script itself using 'ini_set'.
Solution 2
While testing a CLI php version 5.5.9
it appears that in cli it has unlmited memory limit by default, and specifying php -d memory_limit=4G my_script.php
will set a limitation to that.
Related videos on Youtube
Ryan H
I was the student tech at my High School, Running the Windows Server 2003 Domain and File Servers. On my own time, I played with Fedora Core for a bit. Then, coming to College, I became the administrator of the Computer Science department, and became familiar with Windows Server 2008 Active Directory, File Services, etc. This is where I gained my experience with Debian Linux (my preferred distro), and with routing and web technologies under Linux (dns, apache, dhcp, iptables). I use Cisco routers, but much prefer the procurve hardware from HP. I worked at Pacific Union College as the Network Security Specialist, dealing with various Windows Server technologies and Networking Infrastructure. Now I work for NWA Media, doing web development, primarily in Python.
Updated on September 18, 2022Comments
-
Ryan H over 1 year
I am getting a memory error in a php cron job:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /opt/matrix/core/lib/DAL/DAL.inc on line 830
The applicable parts of the crontab are:
$ sudo crontab -u www-data -l MAILTO=root # m h dom mon dow command */15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
I am running on Debian Squeeze, fully updated.
The obvious solution would be that the cli has a low memory limit (of 64MB). However, /etc/php5/cli/php.ini says it's unlimited.
$ cat /etc/php5/cli/php.ini | grep memory_limit memory_limit = -1
I read somewhere that it could be different for different users, and since the process is running as www-data, i ran:
$ sudo -u www-data -s $ php -i | grep memory_limit memory_limit => -1 => -1 suhosin.memory_limit => 0 => 0
Even the apache/php.ini has a higher limit than the error is claiming:
$ sudo cat /etc/php5/apache2/php.ini | grep memory_limit memory_limit = 128M
What am I missing? Where is this memory limit?
-
Ryan H almost 13 yearsThat conf is the debian default configuration, nothing special from me. Strangely, the comment above it say that it makes the memory limit 128 MB.
-
Derek Downey almost 13 yearsHrm, the question of WHERE the value is coming from (which is the actual question apparently /fail reading comprehension) do you have any ini_set memory_limit in the code?
-
Allan Jude almost 13 yearsThat just wastes more memory on Apache. Both the SAPI and CLI are installed, so it is best to use the CLI in this case.
-
Allan Jude almost 13 yearsrun php --ini to print a list of the configuration files it is reading. In a FreeBSD configuration it will look for files in /usr/local/etc/php/*.ini after reading the main /usr/local/etc/php.ini
-
Ryan H almost 13 yearsit seems that the script is setting the memory internally to this value. Thanks for helping me rule out everything else. I really didn't want it to be that! Thanks for the -d tip.
-
Ryan H almost 13 yearsThe script sets its own memory limit internally to the application. It was set to 64 MB. Thanks for helping me find it.
-
Derek Downey almost 13 yearsGlad you found it!
-
Aleksandr Ryabov over 5 yearsYou can also use
php -dmemory_limit=-1 your_script.php
for unlimited memory usage -
zed over 5 yearsDo note that it is
M
notMB
. UsingMB
does nothing at all. -
Tim over 4 yearsThat's not correct, CLI will just follow the memory_limit setting specified in the php.ini file