PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 41007872 bytes)

前端 未结 4 635
半阙折子戏
半阙折子戏 2021-01-24 15:26

I\'m getting this error when I try to call the mail() function.

I tried adding ini_set(\'memory_limit\', \'64m\') to my index.php file - Which include()\'s

相关标签:
4条回答
  • 2021-01-24 16:08

    The characters you have provided for the replacement may be causing the str_replace function to loop endlessly.It is not a good idea either to be playing around with setting the maximum memory limit for php. Try another string function. Maybe:

    $message = preg_replace("\n.", "\n..", $message);
    

    preg_replace is very good with such characters and may not run in many useless loops without knowing what to do.

    I hope this helps.

    0 讨论(0)
  • 2021-01-24 16:09

    (33 554 432 bytes) + (41 007 872 bytes) = 71.1081543 megabytes

    Set your memory_limit to 96M and call it a day!

    0 讨论(0)
  • 2021-01-24 16:22

    If setting your memory_limit higher and higher doesn't work, maybe you have an endless-loop somewhere which allocates memory space until the limit is reached.
    I'm not sure how save the str_replace() function is, but it might create an endless-loop here:

    str_replace("\n.", "\n..", $message);
    

    "\n." is being replaced with "\n.." ==> "\n.." might be replaced with "\n..." ==>.... And you are using more and more memory until you reached the limit

    0 讨论(0)
  • 2021-01-24 16:28

    If I look at the SafeString class, I don't see a unsafeRaw() method, but there is a toUnsafeRawString() method. Did you try debugging?

    btw Why would you use this class if you're using the raw values anyway? That doesn't make any sense.

    0 讨论(0)
提交回复
热议问题