質問

PHPからより多くのメモリを取得するのに問題があります。

これはエラーメッセージです:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...

まだ:

php.iniファイルのmemory_limitを32Mに設定しました:

memory_limit = 32M;

実際のスクリプトで手動でオーバーライドしようとしました:

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

そして、ここで私は迷っています-phpinfo()を介して、このphp.iniファイルが実際に使用されるiniファイルであり、memory_limitが正しく設定されているようであることを確認しました。 memory_limitの行はこれを与えます:

memory_limit    32M 32M

すべてが正しく構成されているように見えますが、20971520バイト(〜20M)しか取得できません。

この制限が課されている場所を見つけるために他にどこを探すべきですか?

編集: VPSのUbuntu 9.04で、nginx / fastcgiの下でphpを実行しています。 php-cgiプロセスは少しリソースを消費するように見えます(RES = 25m、VIRT = 187m)が、10mの物理メモリと500mのスワップスペースがあります。

役に立ちましたか?

解決 2

実行中のコードに目を通すだけで、誰かがこれを設定ファイルにハードコーディングしました:

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

これは、私が行っていた他のすべてをオーバーライドしていました。ふう。

他のヒント

私の最初の本能は、PHPが別のphp.iniを読み込んでいると推測することです。

Debian(およびほとんどの場合Ubuntu)では、PHPの各バージョン(cli、cgi、およびapache)に独自のphp.iniのコピーがあります。

.htaccessファイルに設定してみてください。これは、1つのサーバーでサイトを機能させるために行う必要があります。

使用した設定は次のとおりです。

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top