FPDF致命错误:允许的内存大小为33554432字节(PHP)
这是一个经常讨论的问题,但到目前为止,似乎没有解决方案适合我的问题。 我正在生成一个带有$pdf=new FPDF;的pdf。这个很好用。但是现在我想要一个页脚和页码。在尝试了很多东西之后,我发现,如果你想设置一个页脚,你需要用$pdf=newyourpdfclassname创建一个实例;它扩展了父FDF类 再次运行整个过程时,我收到一个错误:允许的内存大小为33554432字节,已耗尽。我试图在第16行的/.blabla/yourPDFclassName.php中分配77个字节 有人知道为什么我调用子类时会发生此错误吗?我的意思是它与父类一起工作。。。顺便说一句,77字节比33554432字节小得多。。。嗯FPDF致命错误:允许的内存大小为33554432字节(PHP),php,fpdf,Php,Fpdf,这是一个经常讨论的问题,但到目前为止,似乎没有解决方案适合我的问题。 我正在生成一个带有$pdf=new FPDF;的pdf。这个很好用。但是现在我想要一个页脚和页码。在尝试了很多东西之后,我发现,如果你想设置一个页脚,你需要用$pdf=newyourpdfclassname创建一个实例;它扩展了父FDF类 再次运行整个过程时,我收到一个错误:允许的内存大小为33554432字节,已耗尽。我试图在第16行的/.blabla/yourPDFclassName.php中分配77个字节 有人知道为什么
class REPORTSPDF extends FPDF { .... }
16: $pdf = new REPORTSPDF();
第16行在REPORTSPDF的构造函数中。第16行之前没有其他行。当调用$pdf=new REPORTSPDF时,它就会崩溃
如果没有页脚函数,我也会有同样的错误。奇怪的是当我把第16行改成
$pdf = new FPDF();
除了没有页脚外,一切正常。增加内存限制
有3种方法可以增加内存限制
使用配置文件
更改php.ini中的内存限制
内存限制=32M
使用PHP
ini_设置‘内存限制’,‘32M’
使用htaccess
php_值内存_限制32M
不同服务器中的方法
共享主机
专用或VPS优化
改变你的记忆限制 试试看
错误消息表示,在尝试分配额外的77字节时,超出了33554432字节的内存限制
只有两种方法可以解决这个问题:要么优化子类中的代码,这样就不需要那么多内存;要么在php.ini中增加内存限制;要么使用等效的方法来处理php配置。听起来代码中有一个无限循环。试着做一个简单的hello world测试,看看会发生什么,并检查代码中的所有循环。我自己没有使用过它,但FPDF的扩展是一种尝试,它是一页一页地构建到磁盘,而不是纯粹在内存中构建PDF消除这个问题会比解决它更好吗?生成pdf不应该使用!32MB!ram@oezi那就更好了,我想,如果它的共享服务器,然后16M甚至好。你能把你的代码特别是前16行的问题发生在哪里?您的pdf中是否有可能导致问题的循环,或者一个简单的hello world都不起作用?如果你不使用页脚,你自己的课还能用吗?我在第一篇文章中更新了信息。添加页脚显然会消耗更多内存,因为整个内容都必须保存在内存中。这就是为什么不添加页脚时不会超过内存限制的原因。等等,如果第16行在REPORTSPDF的构造函数中,并且它创建了REPORTSPDF的一个实例,那么这不会在循环中结束吗?@Andrei-怀疑对循环的引用是问题的症结所在,那么代码应该简单地调用parent::\u construct并使用$thisreferences@Mark-真的,对不起。。。我认为这已经足够清楚了。正如对japanpro所说的:消除这个问题不是比解决它更好吗?生成pdf不应该使用!32MB!ramit在构造函数中确实有一个循环。。。谢谢你的帮助
php_value memory_limit 32M
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
ini_set('memory_limit','128M');