As que ninguém esquece:
upload_max_filesize
define qual o tamanho máximo permitido por arquivo. o valor padrão é 2 megas. se o arquivo exceder esse limite, $_FILES["file"]["error"] chega com valor 1.
file_uploads
define se é permitido o upload de arquivos. o valor padrão é On.
upload_tmp_dir
define o diretório temporário usado para guardar os arquivos de upload. o usuário que está executando o web script (em geral, o mesmo usuário do Web Server) deve ter permissão de escrita nesse diretório. se não for especificado, será usado o diretório temporário padrão do sistema.
O que quase ninguém lembra:
post_max_size
muito importante! define o tamanho máximo dos dados enviados via POST. isso afeta diretamente o upload de arquivos. esse valor deve sempre ser maior que upload_max_filesize! o valor padrão é 8 megas.
se o tamanho de dados exceder o valor de post_max_size, $_POST e $_FILES chegarão vazios. e por isso
eu
muita gente
fica horas pra descobrir porque consegue fazer upload de arquivos pequenos mas não consegue com arquivos grandes. não dá erro, o arquivo simplesmente não chega. diferente do que acontece quando o arquivo excede apenas o upload_max_filesize.
memory_limit
define a quantidade máxima de memória que o script pode alocar. isso também afeta upload de arquivos. o manual do PHP fala que memory_limit deve ser maior que post_max_size, mas eu mesmo já consegui fazer upload de arquivos maiores que o valor configurado nessa diretiva. vai entender! valor padrão: 128 megas.
observação importante: todas essas diretivas que definem tamanho recebem o valor em bytes. porém, como o PHP tem a péssima mania de querer fazer tudo ao mesmo tempo, pode ser usado uma notação mais amigável: K (pra Kilobyte), M (pra Megabyte) and G (pra Gigabyte). por exemplo: 1K ao invés de 1024. isso só vale dentro do php.ini.
exemplo prático do uso das diretivas acima. no php.ini:
; Maximum allowed size for uploaded files.
upload_max_filesize = 100M
; 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 size of POST data that PHP will accept.
post_max_size = 128M
; Maximum amount of memory a script may consume (8MB)
memory_limit = 256M

0 comentários:
Postar um comentário