This error message is being presented, any suggestions?
Allowed memory size of 33554432 bytes exhausted (tried to allocate 43148176 bytes) in php
If you are using a shared hosting, you will not be able to enforce the increment in the php size limit.
Just go to your cpanel and upgrade your php version to 7.1 and above then you are good to go.
I have faced same problem in php7.2 with laravel 5.6. I just increase the amount of variable memory_limit = 128M
in php.ini as my applications demand. It might be 256M/512M/1048M.....Now it works fine.
You can increase the memory allowed to php script by executing the following line above all the codes in the script:
ini_set('memory_limit','-1'); // enabled the full memory available.
And also de allocate the unwanted variables in the script.
Check this php library : Freeing memory with PHP
I notice many answers just try to increase the amount of memory given to a script which has its place but more often than not it means that something is being too liberal with memory due to an unforseen amount of volume or size. Obviously if your not the author of a script your at the mercy of the author unless your feeling ambitious :) The PHP docs even say memory issues are due to "poorly written scripts"
It should be mentioned that ini_set('memory_limit', '-1');
(no limit) can cause server instability as 0 bytes free = bad things
. Instead, find a reasonable balance by what your script is trying to do and the amount of available memory on a machine.
A better approach: If you are the author of the script (or ambitious) you can debug such memory issues with xdebug. The latest version (2.6.0 - released 2018-01-29) brought back memory profiling that shows you what function calls are consuming large amounts of memory. It exposes issues in the script that are otherwise hard to find. Usually, the inefficiencies are in a loop that isn't expecting the volume it's receiving, but each case will be left as an exercise to the reader :)
The xdebug documentation is helpful, but it boils down to 3 steps:
apt-get
and yum
etc xdebug.profiler_enable = 1
, xdebug.profiler_output_dir = /where/ever/
If you are trying to read a file, that will take up memory in PHP. For instance, if you are trying to open up and read an MP3 file ( like, say, $data = file("http://mydomain.com/path/sample.mp3" ) it is going to pull it all into memory.
As Nelson suggests, you can work to increase your maximum memory limit if you actually need to be using this much memory.
If you want to read large files, you should read them bit by bit instead of reading them at once.
It’s simple math: If you read a 1 MB large file at once, than at least 1 MB of memory is needed at the same time to hold the data.
So you should read them bit by bit using fopen
& fread
.