2

这是一个经常讨论的问题,但到目前为止似乎没有解决方案适合我的问题。我正在生成一个带有 $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();

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

4

5 回答 5

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
于 2010-09-27T13:39:53.510 回答
2

该错误消息意味着,在尝试分配额外的77 个字节时,超出了 33554432 个字节的内存限制。

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

于 2010-09-27T13:42:26.220 回答
1

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

于 2010-09-27T14:03:42.747 回答
0

更改您的 memory_limit。

尝试,

ini_set('memory_limit','128M');
于 2010-09-27T13:41:07.247 回答
0

我自己没有使用过它,但 FPDF 的FPDF2File扩展是试图将 PDF 逐页构建到磁盘而不是纯粹在内存中

于 2010-09-27T14:05:32.390 回答