Я получаю эту ошибку, когда пытаюсь вызвать функцию mail ().
Я попробовал добавить ini_set('memory_limit', '64m')
в файл index.php. К ним относятся () все остальные файлы, но это не исправить.
Затем я попытался добавить файл php.ini в корневой каталог (где находится index.php) с содержимым memory_limit = 64M
которое тогда дало мне PDO Class, не найденные ошибки. Поэтому я добавил в расширения PDO файл php.ini, и теперь все ошибки исчезли.
Однако код все еще не работает. phpinfo () показывает, что ограничение памяти было увеличено до 64M, но моя функция mail () убивает выполнение страницы.
Как я могу это исправить? : /
Почтовая функция
private static function emailPassword(SafeString $email, $password) { $subject = 'Registration'; $message = 'Your password is: ' . $password . "\n"; $headers = 'From: registration@domain.com' . "\r\n"; $headers .= 'Reply-to: registration@domain.com' . "\r\n"; $message = str_replace("\n.", "\n..", $message); if (!mail($email->unsafeRaw(), $subject, $message, $headers)) { throw new Exception('Failed'); } }
(33 554 432 байта) + (41 007 872 байта) = 71,1081543 мегабайт
Установите memory_limit на 96M и назовите это днем!
Если я посмотрю на класс SafeString, я не вижу метод unsafeRaw (), но есть метод toUnsafeRawString (). Вы пытались отладить?
btw Зачем вам использовать этот класс, если вы все равно используете исходные значения? Это не имеет никакого смысла.
Если настройка memory_limit выше и выше не работает, возможно, у вас есть бесконечный цикл где-то, где выделяется пространство памяти, пока не будет достигнут предел.
Я не уверен, как сохранить функцию str_replace (), но здесь может возникнуть бесконечный цикл:
str_replace("\n.", "\n..", $message);
"\ П." заменяется на «\ n ..» ==> «\ n ..» может быть заменено на «\ n …» ==> …. И вы используете все больше и больше памяти, пока не достигнете предела
Символы, которые вы предоставили для замены, могут вызывать str_replace
функции str_replace
Не рекомендуется даже играть с настройкой максимального предела памяти для php. Попробуйте использовать другую строковую функцию. Может быть:
$message = preg_replace("\n.", "\n..", $message);
preg_replace
очень хорош с такими персонажами и может не работать во многих бесполезных циклах, не зная, что делать.
Надеюсь, это поможет.