FPDF致命错误:允许的内存大小为33554432字节(PHP)

时间:2010-09-27 13:38:22

标签: php fpdf

这是一个经常讨论的问题,但到目前为止,没有任何解决方案似乎适合我的问题。 我正在使用$ pdf = new FPDF()生成pdf; 。这很好用。但现在我想要一个页码的页脚。在尝试了很多我发现的事情后,如果要设置页脚,则需要使用$ pdf = new yourPDFclassName()创建一个实例; (扩展了父FDF类)。

再次运行整个过程我收到错误:第16行的/..blabla/yourPDFclassName.php中允许的内存大小为33554432字节(试图分配77个字节)

当我调用子类时,是否有人知道为什么会出现此错误?我的意思是它适用于父类...而顺便说一句,77字节远小于33554432字节......嗯

class REPORTSPDF extends FPDF { .... }

16: $pdf = new REPORTSPDF();

第16行是REPORTSPDF的构造函数。第16行之前没有其他行。当$ pdf = new REPORTSPDF()被调用时,它就崩溃了。

没有页脚功能我有同样的错误。奇怪的是,当我将第16行更改为

$pdf = new FPDF();

一切正常(除了我没有页脚)。

5 个答案:

答案 0 :(得分:2)

增加内存限制

有3种方法可以增加内存限制

  • 使用配置文件

    更改php.ini中的内存限制

    memory_limit = 32M

  • 使用PHP

    的ini_set( 'memory_limit的', '32M');

  • 使用htaccess

    php_value memory_limit 32M

不同服务器中的方法

共享主机

php_value memory_limit 32M

专用或VPS优化

ssh -lroot domain.com

locate php.ini

vi /usr/local/php/etc/php.ini

edit to 

memory_limit=32M;

save file

httpd restart

/sbin/service httpd restart

答案 1 :(得分:2)

错误消息表示在尝试分配附加 77个字节时,超出了33554432字节的内存限制。

只有两种方法可以解决这个问题:优化子类中的代码,这样就不需要那么多的内存,或者增加php.ini中的内存限制(或使用等效的方法来操作PHP配置)。

答案 2 :(得分:1)

听起来你的代码中有无限循环。尝试做一个简单的hello-world-test,看看会发生什么,并检查代码中的所有循环。

答案 3 :(得分:0)

更改你的memory_limit。

试,

ini_set('memory_limit','128M');

答案 4 :(得分:0)

我自己没有使用它,但FPDF的FPDF2File扩展是尝试逐页构建PDF页面而不是纯粹在内存中