【问题标题】:FPDF Fatal error: Allowed memory size of 33554432 bytes exhausted (PHP)FPDF 致命错误:允许的内存大小为 33554432 字节已用尽(PHP)
【发布时间】:2010-09-27 13:38:22
【问题描述】:

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

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

【问题讨论】:

  • 能否请您发布您的代码(特别是前 16 行到问题发生的位置?)?您的 pdf 中是否有任何可能导致问题的循环,或者甚至没有一个简单的 hello-world 工作?如果您不考虑页脚,您自己的课程是否有效?
  • 我在第一篇文章中更新了信息。
  • 添加页脚显然会消耗更多内存,因为整个内容必须保存在内存中。这就是为什么不添加页脚时不会超出内存限制的原因。 edit 等等,如果第 16 行在 REPORTSPDF 的构造函数中,并且它创建了一个 REPORTSPDF 的实例,那会不会陷入循环?
  • @Andrei - 怀疑你对循环的引用是问题的症结所在,当然代码应该简单地调用 parent::__construct() 并使用 $this 引用
  • @Mark - 确实,对不起......认为它已经足够清楚了。

标签: php fpdf


【解决方案1】:

增加内存限制

有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

【讨论】:

  • 解决问题不是更好吗?生成pdf不应该使用!32MB!公羊
  • @oezi 越多越好,我认为如果它的共享服务器那么 16m 甚至更好。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 它在构造函数中确实有一个循环...感谢您的帮助
    【解决方案4】:

    改变你的 memory_limit。

    试试,

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

    【讨论】:

    • 对 japanpro 说:消除问题不是比解决问题更好吗?生成pdf不应该使用!32MB!公羊
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 2013-02-24
      • 1970-01-01
      • 2017-11-06
      • 2015-07-06
      相关资源
      最近更新 更多