Upload de grandes arquivos com PHP + IIS 7

  • Configurações do PHP não suportam grandes uploads de arquivos
  • IIS 7 e seus arquivos de configuração não suportam grandes arquivos
  • Como resolver Configurações do PHP Você deverá abrir o arquivo PHP.ini, que conterá as seguintes variáveis para suportar upload de grandes arquivos:
    • upload_max_filesize: é a variável mais importante do PHP.ini para upload de arquivos, você deve setá-la para o tamanho máximo de arquivo que deseja trabalhar
    • post_max_size: variável que determina o tamanho do POST que o PHP irá processar, aconselho a colocar do mesmo tamanho da upload_max_filesize
    • max_execution_time: guarda o tempo máximo de execução em segundos do script PHP. Caso tenha alguma lógica complicada ou demorada no manuseio do arquivo, faça os cálculos e coloque um tempo razoável.
    • max_input_time: guarda o tempo máximo em segundos que o PHP irá “gastar” recendo dados, seja via post, get, put. Então para grandes arquivos e dependendo das conexões entre o cliente e o servidor esse número deverá ser algo em torno de 15 a 20 minutos. Mas de qualquer maneira, faça os cálculos.
    • memory_limit: a memória também deverá ser alterada para suportar o trabalho com grandes arquivos.
    Meus caros, contudo isso em qualquer outro servidor linux já resolveria nossos problemas, já para um servidor windows será necessário ainda configurar como o IIS se comunica com o FastCGI. Configurações do IIS 7 + web.config No IIS 7 você deverá configurar novamente os limites de tempos de execução e o tamanho da requisição aceita. No arquivo web.config acrescente dentro das tags de configuration: <system.web><httpRuntime  enable=”true” maxRequestLength=”1073741824″ executionTimeout=”9600″ maxWaitChangeNotification=”1800″ ></httpRuntime></system.web> Que definirá o tamanho aceito em bytes da requisição (1gb nesse caso), o tempo de execução em segundos e o tempo de espera. E os limites de requisições também no que tange a segurança, também setado para 1gb. <system.webServer><security> <requestFiltering> <requestLimits maxAllowedContentLength=”1073741824″ /> </requestFiltering> </security></system.webServer> Além do web.config, que é um arquivo do próprio projeto, pode ser que seja necessário atualizar algumas varíaveis do próprio IIS 7, que se encontram no arquivo %system32%inetsrvconfigapplicationHost.config procurará a tag fastcgi e alterará o handler do PHP para algo parecido: <application fullPath=”C:Program Files (x86)PHPv5.3php-cgi.exe” monitorChangesTo=”C:Program Files (x86)PHPv5.3php.ini” activityTimeout=”1800″ requestTimeout=”1800″ instanceMaxRequests=”10000″> <environmentVariables> <environmentVariable name=”PHP_FCGI_MAX_REQUESTS” value=”10000″ /> <environmentVariable name=”PHPRC” value=”C:Program Files (x86)PHPv5.3″ /> </environmentVariables> </application>   Acho que é isso, se alguém tiver alguma dúvida, basta comentar abaixo que tentaremos ajudar. Cordialmente,]]>