0

まず、別の同じことをお詫びします(私が知っているこの質問の無数の繰り返し)が、私はこれに完全に悩まされ、答えを探すのに一日中費やしました(ここで以前のすべてのスレッドをチェックするとともに)。

だから私はPHPを介して大きな(っぽい)ファイルをアップロードしようとしています。スクリプトは、8 ~ 10Mb マーク付近のファイルで失敗します (最大 7.5Mb のファイルで機能し、10Mb で失敗します)。空のファイル配列を返すだけです。つまり、次のようになります。

print_r($_FILES)
= array( )

Windows 2008 R2 OS で Plesk 10 を使用して IIS7 を実行しています。ここに私のフォームがあります:

<form enctype="multipart/form-data" action="upload.php" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="200000000">
  <input name="Filedata" type="file" />
<input type="submit" value="Upload File" class="button" />
</form>

関連するいくつかの php.ini 変数:

max_execution_time: 240
max_input_time: 360
post_max_size: 1600M
upload_max_filesize: 800M
memory_limit 1600M

そして、私のweb.configにはこれがあります:

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="200000000"/>
  </requestFiltering>
</security>

php_info() がそれらをそのように報告するため (また、ini_get('...') もそれらを正しいと報告するため)、php.ini がリッスンされていることはわかっています。 (ただし、php_info() がローカルを報告する場合は、それらが使用されていると仮定しています。)スクリプトにデバッグ コードを追加します。

echo ini_get('post_max_size') . "<br />";
echo ini_get('upload_max_filesize') . "<br />";
echo $_SERVER['CONTENT_LENGTH'] . "<br />";

それは反響します:

1600M
800M
10424520

最後の 1 つは 10Mb (ish) のファイル サイズ (バイト単位) です (私は想定しています)。だから私の質問は、ここで何が欠けているのですか?

4

1 に答える 1

1

だから私はついにここで答えを見つけ、それが将来何人かの魂を助けるかもしれないと思った.

Plesk は「ローカル」の php 設定を上書きすることを許可していますが、実際には変更をリッスンしておらず、php.ini の「マスター」の値はリッスンされていますが、ローカルの値はリッスンされていません。 .

ここに詳細情報があります: PHP post_max_size ローカル値が Plesk / IIS のマスター値によって上書きされましたか?

解決するために、必要に応じてデフォルトのplesk php.iniを変更して、マスター値を変更しました。phpinfo() は、必要な post_max_size がローカルとマスターの両方で 800M になったことを報告し、必要に応じて機能しました。

于 2013-02-13T00:45:15.850 に答える