私はこれを前に働いていました:
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","256M");
echo ini_get("memory_limit")."\n";
それはこれを入力します:
32M
256M
コマンドラインで実行されるphpスクリプト上。 5.2から5.3に更新しましたが、今からこのディレクティブはまったく機能しません。
32M
32M
そして、致命的なエラーでスクリプトを失敗させます...
私はphpのドキュメントをチェックしてグーグルで検索しましたが、「memory_limit」が廃止されていることはどこにも見当たりませんでした。
誰にも解決策がありますか?
ほとんどの場合、sushosinが更新され、suhosin.memory_limitのデフォルトが無効から0(memory_limitへの更新が許可されない)に変更されました。
Debianでは、/ etc/php5/conf.d/suhosin.iniを変更します
; suhosin.memory_limit = 0
に
suhosin.memory_limit = 2G
または、どちらの値でも快適です。 Sushosinの変更ログは http://www.hardened-php.net/hphp/changelog.html で見つけることができます。
Memory_limit保護の実装方法を変更しました
Suhosin拡張機能を有効にしている場合、スクリプトが開始時または定義済みの上限を超えてメモリ制限を設定することを防ぐことができます。
http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit
以下に、チェックする価値のあるもののリストを示します。
スホシンはインストールされていますか?
ini_set
ini_set('memory_limit', '512'); // DIDN'T WORK ini_set('memory_limit', '512MB'); // DIDN'T WORK ini_set('memory_limit', '512M'); // OK - 512MB ini_set('memory_limit', 512000000); // OK - 512MB
整数が使用される場合、値はバイト単位で測定されます。この FAQ で説明されている短縮表記も使用できます。
http://php.net/manual/en/ini.core.php#ini.memory-limit
指定されたディレクティブの値を設定します。これは.htaccessファイルでは使用できません。 php_admin_valueで設定されたディレクティブタイプは、.htaccessまたはini_set()でオーバーライドできません。以前に設定した値をクリアするには、値としてnoneを使用します。
私のために働く、PHP 5.3とは何の関係もない。そのような多くのオプションと同様に、safe_modeが有効な場合、ini_set()
を介してオーバーライドすることはできません。更新されたphp.ini
を確認してください(さらに良いのは、そこのmemory_limitも変更してください)。
Ubuntu 10.04にはSuhosinパッチのみが付属しており、構成オプションは提供されません。ただし、php5-suhosinをインストールしてこれを解決できます。
apt-get update
apt-get install php5-suhosin
これで/etc/php5/conf.d/suhosin.iniを編集して設定できます:
suhosin.memory_limit = 1G
次に、ini_setを使用すると、スクリプトで機能します。
ini_set('memory_limit', '256M');