4

共有ホスティング サーバーで Drupal インストールを実行しようとしています。(プロバイダーに加入しているだけで、ボックスを所有していません。)

Apache サーバーの PHP メモリ制限を増やす必要があります。私が試してみました

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

settings.php (すべてのリクエストに含まれるファイル) に含まれていますが、これにより内部サーバー エラー 500 が発生します。それを取り出すと、次のエラーが発生します。

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 19456 bytes)...

補足質問: 19456 は 33554432 未満です。許可されたサイズが使い果たされたと言っているのはなぜですか?

また、これを.htaccessに入れてみました:

 php_value memory_limit                 128M 

これは効果がありませんでした。

4

6 に答える 6

10

あなたが得ているエラーメッセージ:

33554432 バイトの許容メモリ サイズを使い果たしました (19456 バイトを割り当てようとしました)

使用が許可されている 33554432 バイトを超えて割り当てようとしていることを示します。つまり 32 MB :

; 33554432/1024/1024
        32

これは、割り当てに失敗したのは、PHP が 19 キロバイトを割り当てようとしたときに発生したことを示しています。しかし、すでにほぼ 32MB が割り当てられていました。合計が 32MB 未満であったため、これらの割り当ては失敗しませんでした。

エラー メッセージの「19456 バイト」の部分は、実際に関連するものではありません。関連するのはmemory_limit、32 MB に設定されていることです。


がある種のセキュリティであることを考えるmemory_limitと、ホスティングプロバイダーがその値を変更できるのは奇妙です...

共有ホスティングを使用している場合、サーバー上の誰もが必要な量のメモリを取得できることを意味します...これは、同じサーバー上の他のユーザーにとってはあまり良くありません!

ところで:32MBは実際にはかなり妥当な値です.Webアプリケーションに32MB以上を許可するように構成されたサーバーを見たことがありません...そしてマニュアルによると、PHP 5.2のデフォルト値は16MBのようです。
(そして、私は Drupal を数か月使用しています)


エラー 500 については、あまり考えがありません... 1 つの可能性として、safe_modeがアクティブになっており、実行時に memory_limit を設定できない可能性があります。

マニュアルはそれについて多くを語っていないように見えますが、max_execution_timeディレクティブの下に少しの情報があります:

ini_set()セーフ モードで実行している場合、この設定を変更することはできません 。唯一の回避策は、セーフ モードをオフにするか、php.ini で時間制限を変更することです。

についても同じことが言えると思いますmemory_limit。とにかく、それは論理的に見えるでしょう。

于 2009-09-06T22:22:19.543 に答える
1

ホスティング会社のみが変更できるため、許可されているメモリの量をホスティング会社に確認する必要があります。変更できない場合は、新しいホスト会社を探すことをお勧めします.

ただし、drupalに関しては、追加するのは正しかった

ini_set('memory_limit', 'xxxM');

settings.php ファイルに。(xxx = 必要なメモリ)

Drupal には多くのフェイル セーフがあります。これはそのうちの 1 つです。drupal はメモリの消耗を防ぎます。

そのため、ホスティング会社に確認し、それを増やして、settings.php ファイルで memory_limit を設定してください。

通常、この行はスクリプトの一番下に追加するだけですが、実際にはどこにでも追加できます。

同様の問題を抱えていて、drupal でこれを解決する方法がたくさんある他の人のために、これを読んでください。

http://drupal.org/node/29268

幸運を

于 2011-12-21T14:46:09.683 に答える
1

php.ini ファイルに入れます。ホストに Apache を再起動するように依頼します。drupal.org のこのノードでは、その方法について説明しています。ホスティングを共有している場合は、drupal.org で最も人気のあるプロバイダーのほとんどについて、php.ini を変更する方法についてのステップバイステップのガイドがあります。「PROVIDER_NAME のメモリ制限を増やす」を検索してください。

于 2009-09-11T00:03:48.930 に答える
1

メモリ不足エラーを設定memory_limitして最大値よりも少ない場合、原因の 1 つは、プロセスを生成している上流システム (Apache) にあります。

Apache 構成 ( /usr/local/apache/conf/httpd.conf) には、リクエストを処理するすべての子プロセス (および Drupal がそのようなプロセスで実行されている) の上限を設定するディレクティブがあります。特定の Apache サーバーは、複数の顧客 (あなたと他のいくつかの顧客) を処理する場合があります。1 人の顧客がすべてのメモリを占有することを許可した場合、他のすべての顧客が BadTime(tm) を経験することになります。そのような状況を回避するために、そのような各プロセスが持つことができるメモリ量を制限します。

例えば:

# rlimits, do not modify
#  Setting single-process size 
#RLimitMEM 85643200 104857600
RLimitMEM 134217728 537395200

ここでは、ホスティング サービスによって設定された元の値をコメント アウトし、値を増やしました。

もちろん、共有サーバーを使用している場合、この構成を変更できる可能性はほとんどありません。実際、これはホスト プロバイダーが変更する構成である可能性があります。

FWIW、Host Gator はプロセスごとに最大 80Mb を提供するようです。PHP ランタイムは ~16Mb かかるようです。

于 2013-01-29T01:12:01.087 に答える
0

なぜ機能しないのか、プロバイダに問い合わせてください。使用できるメモリの量が制限されており、それ以上のメモリ量を設定できないか、または要求したメモリ量がない仮想ホスト内で実行していると思います (これが原因である可能性があります)。エラー 500)。

于 2009-09-06T22:06:50.740 に答える
0

多くの共有ホスティング プロバイダーは、共有ボックス上の 1 つのサイトが同じマシン上の他のサイトからメモリを占有することを望まないため、PHP のメモリ制限を上げることを許可しません。ホスティング プロバイダーの FAQ などを読むことをお勧めします。PHP に関する制限事項が記載されている場合があります。

補足質問: 19456 は 33554432 未満です。許可されたサイズが使い果たされたと言っているのはなぜですか?

小さい方の数値は、すべての割り当てリクエストの実際の合計ではなく、合計割り当て量が制限を超える原因となったリクエストのサイズです。したがって、33540000 バイトが既に割り当てられていて、サイズが 19456 の別のオブジェクトが要求された場合、そのメッセージが表示されます。

于 2009-09-06T22:20:49.127 に答える