web-dev-qa-db-ja.com

PHP:設定memory_limits> 1024Mは機能しません

悪い理由で、ディレクトリのmemory_limitsを1Gより高く設定する必要がありますが、LennyサーバーのPHP 5.2.17では、たとえば2048Mを置くと、php.iniのデフォルト値(256M)しか取得できません。

PHPはApacheモジュールとして実行され、phpinfoは(ディレクトリ用に)くれます

memory_limit    1024M   256M
suhosin.memory_limit    0   0

ApacheモジュールまたはPHP confによる制限はありますか?サーバーには4GのRAMしかありませんが、これは単なる特別なスクリプトです。

52
Cédric Girard

メモリ制限をどのように設定しようとしていますか? phpinfo()は現在のPHP予約済みメモリ制限を示しています。これは、php.iniがメモリ制限として設定しているために利用可能です

サーバーが.htaccessを介したPHPコマンドの設定をサポートしている場合、スクリプトディレクトリのApache .htaccessにこれを書き込むと機能する場合があります。

php_value memory_limit 2048M

PHP値を設定するための.htaccessコマンドがオフになる可能性があるためです。次に、PHPコードからこれを試すこともできます。

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

これが機能せず、.htaccessも機能しない場合は、サーバー管理者に連絡する必要があります。

103
kingmaple
ini_set("memory_limit",-1);

これは通常、制限を削除する必要があります

28
pollux1er

4 GBのRAMを使用するためにPHPスクリプトが必要だったのと同じ問題がありました。理由は関係ありません。目標は、PHPで4 GBの制限を設定することでした。

最初のアイデアはini_set('memory_limit', '4096M');を使用することでしたが、これが機能しないことがわかりました。どのように、またはなぜ正直にすべきかはわかりませんが、それは当時私にとって重要ではありませんでした。私は32 GBのRAMを搭載したシステムにいます。それは可能でなければなりません。

私は、1 MBの制限を設定することで、実際の動作が少なくなることを発見しました。

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

Edit Nov '16:実際、これまで実際に遊んだことはありませんが、このシステムでは、この値がすべてのメモリ制限を完全に削除するように見えることに気付きました。私のシステムが提供する可能性のあるRAMを使用できます。

25
nxasdf

ここで説明するように: http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit

Suhosinでは、スクリプトの開始値よりも大きい値を設定は許可されません。

suhosin.memory_limit2048Mに設定すると、メモリ使用量を増やすことができます。

6
Vincent Touzet