Estou usando o phpUploader no IIS8.5. Eu tenho o upload do php definido para 20mb e tenho o site definido para:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="30000001" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
Tentei fazer upload de um arquivo maior do que o permitido, aproximadamente 50 MB, e em vez de php pegá-lo, o IIS me deu um erro.
Aqui está a verificação no phpUploader.php:
// Max size PER file in KB
$max_file_size="20000";
// Max size for all files COMBINED in KB
$max_combined_size="80000";
//Check the size of each file
} Elseif($_FILES['file']['size'][$i] > ($max_file_size*1024)) {
$error.= "<b>FAILED:</b> ".$_FILES['file']['name'][$i]." <b>REASON:</b> File to large.<br />";
Eu tenho isso definido em php.ini:
upload_max_filesize = 100M
Como evito que o IIS apresente erros antes que o php chegue a ele para verificar o tamanho do arquivo?
Qualquer limitação imposta pelo IIS é processada primeiro, antes que estruturas de aplicativos como PHP sejam envolvidas. Se o IIS decidir que a solicitação é muito grande, ele interromperá o pipeline de solicitação e retornará um erro sem nunca invocar o PHP.
Se você deseja lidar com o
file too large
erro em seu código, pode tentar definir o limite do IIS muito alto. Mas se alguém postar um arquivo ainda maior, o erro do IIS ainda será ativado.