使用 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-&gt;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/plaintext/html 正文和附件)。在我能够发送基本测试消息(如问题中的消息)之前,我也不会尝试发送复杂消息。

以上是关于使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)的主要内容,如果未能解决你的问题,请参考以下文章

PHP致命错误:允许的内存大小为134217728字节已用尽

致命错误:允许的内存大小为 1610612736 字节用尽 laravel 护照

php - 致命错误:允许的内存大小为 134217728 字节已用尽 [重复]

致命错误:允许的内存大小为 [重复]

致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 71 字节)

致命错误:PHPExcel 中已用尽的允许内存大小为 134217728 字节