PHPで2MB以上のファイルをアップロード
PHPはデフォルトで2MB以上のファイルがアップロードできない。この上限を変更する方法は2つある。
システム全体で上限を変更
/etc/php.iniのupload_max_filesizeを変更する。
$ php -f phpinfo.php | grep max ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads. file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ;upload_tmp_dir =
; Maximum allowed size for uploaded files. ;upload_max_filesize = 2M upload_max_filesize = 10M
アップロード上限に応じて、post_max_size、max_execution_time、memory_limitも大きくする必要がある。
現在の設定値はphpinfo()で確認できる。
$ cat phpinfo.php <?php echo phpinfo(); ?>
$ php -f phpinfo.php | grep max log_errors_max_len => 1024 => 1024 max_execution_time => 0 => 30 max_file_uploads => 20 => 20 max_input_nesting_level => 64 => 64 max_input_time => -1 => 60 max_input_vars => 1000 => 1000 post_max_size => 8M => 8M upload_max_filesize => 2M => 2M session.gc_maxlifetime => 1440 => 1440
Apacheのディレクトリごとに設定
アップロード上限を変更したいディレクトリに.htaccessファイルを置き、以下の設定値を変更する。メモリ上限などの設定値は適当である。
php_value max_execution_time 60 php_value memory_limit 10M php_value post_max_size 10M php_value upload_max_filesize 10M
.htaccessによるアクセス制限の上書きはApacheのデフォルトで禁止されている。httpd.confのAllowOverrideディレクティブ(デフォルトNone)を変更して許可する。
# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All
(参考資料)
PHP: コア php.ini ディレクティブに関する説明 - Manual
http://php.net/manual/ja/ini.core.php#ini.upload-max-filesize
@IT:Apache 2.0の必須設定と基本セキュリティ対策(3/3)
http://www.atmarkit.co.jp/flinux/rensai/apache2_01/apache01c.html
Apache チュートリアル: .htaccess ファイル - Apache HTTP サーバ
https://httpd.apache.org/docs/current/ja/howto/htaccess.html
| 固定リンク
この記事へのコメントは終了しました。
コメント