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バイトを超えたことを意味します。

これを回避する方法は2つだけです。サブクラスのコードを最適化してメモリをそれほど必要としないようにするか、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 に答える