PHPファイルアップロード機能を実装するためにphp.iniを設定する方法。これには、php.ini 設定ファイルの Upload_tmp_dir、upload_max_filesize、post_max_size およびその他のオプションが関係します。これらのオプションが、ファイルのアップロードの成功または失敗の鍵となります。例として php.5.3 バージョンを取り上げます。
php.ini 設定ファイルを開き、file_uploads を探します。この領域には次の 3 つのオプションがあります:
file_uploads = On
HTTP ファイルのアップロードを許可するかどうか。デフォルト値はオンで、HTTP ファイルのアップロードを許可します。このオプションをオフに設定することはできません。
Upload_tmp_dir =
ファイルアップロード用の一時保存ディレクトリ。指定しない場合、PHP はシステムのデフォルトの一時ディレクトリを使用します。このオプションは、デフォルトでは空です。このオプションは、PHP 実行環境を手動で構成するときに忘れられやすいため、このオプションに値 (upload_tmp_dir = " など) を割り当てる必要があります。 /home/tmp"、これは、ホーム ディレクトリの下に tmp ディレクトリがあり、すべてのユーザーにこのディレクトリへの読み取りおよび書き込み権限が与えられることを意味します。
Upload_max_filesize = 2M
アップロードされるファイルの最大サイズ。このオプションのデフォルト値は 2M です。つまり、50M のファイルをアップロードする場合は、upload_max_filesize = 50M を設定する必要があります。
ただし、upload_max_filesize = 50M を設定するだけでは、まだ大きなファイルのアップロード機能を実現できません。php.ini ファイルの post_max_size オプションも変更する必要があります。
max_file_uploads = 20
一度にアップロードできるファイルの最大数を設定します
php.ini でデータ処理の検索を続けます:
post_max_size = 8M
を参照します。フォームを通じて PHP に送信されるすべてのデータ POST フォーム内のすべての値を含む、受信できる最大値。デフォルトは8Mです。 POST データが制限を超えると、$_POST と $_FILES は空になります。
大きなファイルをアップロードするには、このオプションの値を、upload_max_filesize オプションの値より大きく設定する必要があります。たとえば、upload_max_filesize = 50M に設定した場合、post_max_size = 100M に設定できます。
さらに、メモリ制限が有効な場合、値はmemory_limitオプションの値よりも小さい必要があります。
php.ini でリソース制限を探し続けます。この領域には 3 つのオプションがあります:
max_execution_time = 30
各 PHP ページの実行時間の最大値 (秒)、デフォルトは 30 秒です。 50M ファイルなどの大きなファイルをアップロードする場合、完了までに数分かかる可能性があります。ただし、PHP ページのデフォルトの最大実行時間は 30 秒を超えると、スクリプトの実行が停止します。その結果、Web ページを開くことができなくなります。したがって、max_execution_time = 600 など、より大きな値を設定できます。 0 に設定すると、時間制限がないことを意味します。
max_input_time = 60
各 PHP スクリプトがリクエスト データを解析するために使用する時間 (秒)、デフォルトは 60 秒です。大きなファイルをアップロードする場合は、この値をより大きく設定できます。 0 に設定すると、時間制限がないことを意味します。
memory_limit = 128M
このオプションは、単一の PHP スクリプトが適用できる最大メモリ空間を設定するために使用されます。これは、不適切に書かれたスクリプトがサーバー上の使用可能なメモリを使い果たすことを防ぐのに役立ちます。メモリ制約が必要ない場合は、これを -1 に設定します。
php5.2.0 のデフォルト バージョンは 8M で、php.5.2.0 のデフォルト バージョンは 16M です。 php 5.2.0 以降のバージョンのデフォルトは 128M です。
50M の大きなファイルをアップロードするとします。 php.ini を次のように設定します:
file_uploads = オン
Upload_tmp_dir = "/home/fileuploadtmp"
Upload_max_filesize = 50M
post_max_size = 100M
max_execution_time = 600
max_input_time = 600
memory_limit = 1 28M
ヒント: Memory_limit > post_max_size > を維持する必要があります; Upload_max_filesize
この例は参考用です。実際の状況に応じて調整できます。