PHPのデフォルトのアップロード制限は最大2Mです。この設定を超えるファイルをアップロードする場合は、PHP、Apacheなどのいくつかのパラメータを調整する必要があります。
PHP ファイルのアップロードに関連するいくつかのパラメーターを簡単に紹介しましょう:
•file_uploads: HTTP 経由でのファイルのアップロードを許可するかどうかを切り替えます。デフォルトは ON です。
•upload_tmp_dir:upload_tmp_dir は、PHP によってアップロードされたファイルが配置される一時ディレクトリを記述するために使用されます。指定されていない場合は、サーバーが一時ファイルを閉じていないこと、およびそのフォルダーに対する書き込み権限があることを確認する必要があります。 PHP はシステムのデフォルト値を使用します。
•upload_max_filesize: アップロードできるファイルの最大サイズ。デフォルトは 2M です。
•post_max_size: POST メソッドを使用したフォーム送信中に PHP が受信できるデータの最大量を制御します。 PHPファイルアップロード機能を使用する場合は、この値をupload_max_filesizeより大きくする必要があります。
•max_input_time: POST、GET、および PUT メソッドを介してデータを受信する時間を秒単位で制限します。アプリケーションが低速リンクで実行されている場合は、データの受信に必要な追加時間に対応するために、この値を増やす必要がある場合があります。
•memory_limit: スクリプトの実行によってシステムで使用可能な大量のメモリが使用されるのを避けるために、PHP ではメモリ使用量の制限を定義できます。単一のスクリプトが使用できる最大メモリ容量を指定するには、memory_limit 変数を使用します。memory_limit 変数の値は、post_max_size の値よりも適切に大きくする必要があります。
•max_execution_time: max_execution_time は、PHP がスクリプトを強制終了するまで待機する時間を設定します。この時間は秒単位で計算されます。この変数は、スクリプトが無限ループに入った場合に役立ちます。ただし、完了までに時間がかかる正当なアクティビティ (大きなファイルのアップロードなど) がある場合、この機能により操作が失敗する可能性もあります。このような場合、重要なプロセスの実行中に PHP がスクリプトをシャットダウンしないように、この変数の値を増やすことを検討する必要があります。
Linux ホストの場合、/etc/httpd/conf.d/access.conf/ に php.conf ファイルが存在する場合があります。このファイルにより、一部のシステムのファイル サイズ制限の問題が解決される可能性があります。
次のコードを PHP アップロードに追加して、次のように PHP が大きなファイルをアップロードできるように一時的に有効にします:
リーリー
上記の変数が正常に変更されたかどうかを確認します:
リーリー
3 つの値のサイズ制約関係を含めて php.ini を変更します。したがって、これが変更できない理由は、セーフ モードなどの PHP の動作モードに大きく関係しています。
セーフ モードでは、ini_set 命令 (max_execution_time、memory_limit、child_terminate) は使用できません。
したがって、post_max_size や Upload_max_filesize などは、次のメソッドを使用して変更することはできません:
ini_set('post_max_size','10M');
ini_set('upload_max_filesize','8M');
正しい方法は .htaccess ファイルを使用することです:
php_value Upload_max_filesize 8M
php_value post_max_size 10M
前提として、サイトは httpd.conf:AllowOverride All で構成されています。
PHP のドキュメントには、upload_max_filesize の変更可能な範囲は PHP_INI_PERDIR であると記載されています。 PHP_INI_PERDIR は、php.ini、httpd.conf、または .htaccess ファイルでドメイン ディレクティブを変更できることを意味します。 PHP_INI_SYSTEM ドメイン ディレクティブは、php.ini ファイルと httpd.conf ファイルで変更できます。したがって、upload_max_filesize は int_set を使用して変更できません。 int_setで変更できる範囲はPHP_INI_ALLのみです。
値の取得方法:
リーリー