使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)
Posted
技术标签:
【中文标题】使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)【英文标题】:Using pear : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6144 bytes) 【发布时间】:2011-09-14 11:07:44 【问题描述】:当我尝试使用 PEAR 发送邮件时,出现以下错误:
致命错误:134217728 字节的允许内存大小已用尽(尝试分配 6144 字节)
我在这个网站上进行了搜索,并找到了一些解决方案,例如 ini_set('memory_limit', '-1');
但我遇到了同样的错误。请帮帮我...
<?php
include('Mail.php');
ini_set('memory_limit', '-1');
$headers = array("From"=>"mymail@gmail.com", "Subject"=>"Test Mail");
$body = "This is a test!";
$mail = Mail::factory("mail");
$mail->send("friend@example.com", $headers, $body);
?>
更新
实际上我使用了代码: ini_set('memory_limit', '256M'); 因为,当我查看 php.ini 文件时,我发现它被设置为 128M。所以我在那里和代码中将值更改为 256M。但它没有用。所以我尝试了512M,最后是-1。
谢谢...
【问题讨论】:
您超出了 PHP 默认设置的 128 MB 限制。这是导致错误的脚本中的所有代码吗?这似乎不太可能足以超过 memory_limit。 哪一行导致了问题?是$mail->send()
吗?
@datasage 是对的。与其寻找增加内存限制的方法,不如找出这 6 行代码占用如此多内存的原因。
【参考方案1】:
首先,尝试将memory_limit
设置为 128M 或其他值。发送邮件不应该占用那么多内存,所以如果这不起作用,那么您正在使用的 Mail 类可能有问题。您确定您使用的是最新版本吗?
除此之外,您想要完成的事情可以使用原生 PHP 轻松完成:
mail("friend@example.com", "Subject", $body, implode($headers, "\r\n"));
【讨论】:
(1)memory_limit
已设置为 128M
(或 134217728 字节,在错误消息中提到)。 (2) 我相信他需要的不仅仅是发送消息并将$body
设置为“这是一个测试!”。虽然mail()
足以处理此类基本消息,但我不会使用它来发送更复杂的消息(text/plain
和text/html
正文和附件)。在我能够发送基本测试消息(如问题中的消息)之前,我也不会尝试发送复杂消息。以上是关于使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)的主要内容,如果未能解决你的问题,请参考以下文章
PHP致命错误:允许的内存大小为134217728字节已用尽
致命错误:允许的内存大小为 1610612736 字节用尽 laravel 护照
php - 致命错误:允许的内存大小为 134217728 字节已用尽 [重复]