Manipulando arquivos pelo servidor http

0

Como eu entendo quando o servidor (por exemplo, o Apache) recebe uma solicitação, ele procura pela extensão do nome do arquivo para encontrar o tipo mime associado. Em seguida, ele procura o manipulador que manipula esse tipo de mina (estou afirmando que é baseado em adicionar suporte PHP ao Apache). E aqui estão minhas perguntas:

  1. A declaração acima está correta?
  2. Em caso afirmativo, quando não houver manipulador para determinado tipo MIME, isso significa o comportamento padrão - que é apenas enviar um arquivo para o cliente?
  3. Se mesmo não houver uma extensão explícita - a associação do tipo mime definida (por exemplo, .html ), a ação padrão é apenas enviar um arquivo para o cliente?
  4. De acordo com algumas fontes para adicionar suporte PHP ao Apache, temos que usar addType directive: AddType application/x-httpd-php .php enquanto outros dizem usar addHandler directive: AddHandler application/x-httpd-php .php que, na minha opinião, é o único correto, porque o addType deve ser usado apenas para documentos estáticos. Então, por que a versão addType ainda está correta?
  5. Encontrei em algum lugar essas linhas:

AddType text/html .php .phps
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps

Significa que a diretiva AddType será usada se o servidor não puder encontrar o manipulador para o aplicativo / x-httpd-php tipo mime e a ação seria apenas enviar o arquivo de origem .php para o cliente com texto / html mime-type em resposta?

    
por Mulligan 26.08.2016 / 12:16

1 resposta

3

  1. Sim e não. Há sempre um tipo e um manipulador. Se você olhar na documentação para manipuladores , ele afirma:

    Generally, files have implicit handlers, based on the file type. Normally, all files are simply served by the server, but certain file types are "handled" separately.

Assim, é provável que você possa configurar manipuladores separadamente do tipo. Como na minha resposta original, parece que é o que o arquivo PHP INSTALL sugere até agora.

  1. Se você olhar o link acima, ele será o manipulador padrão chamado, que provavelmente apenas envia o arquivo, pois é o uso mais comum para um servidor da Web.

  2. Eu não entendo o que você quer dizer com isso. Se um arquivo tiver uma extensão, mas essa extensão não tiver um tipo mime associado, o tipo mime padrão será usado. Se você olhar para a postagem Como Eu faço todos os tipos de arquivos não reconhecidos como binários no Apache2? o tipo mime padrão deve ser text / plain conforme a documentação sobre o módulo principal .

  3. / Resposta original: Se você está procurando uma fonte sobre como adicionar suporte PHP ao Apache, por que não apenas consultar o arquivo INSTALL incluído no download do PHP?

De acordo com ele para o Apache 2.x com PHP 5.6.25 você usaria SetHandler .

Agora, se você observar seu exemplo:

AddType text/html .php .phps
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps

Você está certo de que, de acordo com a documentação do Apache de AddType deve ser usado para arquivos estáticos. Usar o AddHandler, por outro lado, pode representar um risco de segurança. Pelo menos não é recomendado pelo arquivo INSTALL do PHP e ele menciona especificamente que um AddType puro pode levar a arquivos sendo executados que na verdade não são realmente arquivos PHP. Do ponto de arquivo INSTALL 8 para o Apache 2.x:

Tell Apache to parse certain extensions as PHP. For example, let's have Apache parse .php files as PHP. Instead of only using the Apache AddType directive, we want to avoid potentially dangerous uploads and created files such as exploit.php.jpg from being executed as PHP. Using this example, you could have any extension(s) parse as PHP by simply adding them. We'll add .php to demonstrate.
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

Se você examinar a documentação sobre AddHandler / SetHandler , ficará claro que o AddHandler e o SetHandler serviria a propósitos ligeiramente diferentes e que a sugestão do arquivo INSTALL "encorajaria" você a enviar seus próprios cabeçalhos à medida que o manipulador interno principal dos arquivos php mudasse.

  1. Não, isso significa que o tipo mime padrão que é enviado para o cliente seria text / html, já que é muito provável que os arquivos php gerem saída html.
por 26.08.2016 / 13:55