A partir dos documentos do php , você precisa usar um SetHandler
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
Então eu quero que o usuário seja capaz de escrever "foo.phps" para um script "foo.php" para apresentar a fonte desse arquivo.
Eu só quero fazer isso em um diretório (já que é um risco de segurança). Posso usar o .htaccess?
Eu adicionei um arquivo .htaccess ao diretório e escrevi o seguinte:
AddType application/x-httpd-php-source .phps
Em seguida, reiniciei o Apache, mas não consigo adicionar "s" ao arquivo para obter a origem. Eu preciso fazer algo com o PHP também?
A partir dos documentos do php , você precisa usar um SetHandler
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
Se você quer saber se você pode usar uma diretiva em um .htaccess em geral, você sempre pode consultar a documentação. Para o Apache 2.0, consulte:
Description: Maps the given filename extensions onto the specified content type
Syntax: AddType MIME-type extension [extension] ...
Context: server config, virtual host, directory, .htaccess
Override: FileInfo
Status: Base
Module: mod_mime
Em particular, observe a parte "Contexto:".
Neste caso específico, sim, você pode. Você só precisa ter certeza de permitir substituições para FileInfo nesse diretório específico:
por exemplo,
<Directory /path/to/my/site>
AllowOverride FileInfo
</Directory>
Você também precisa ter certeza de que o arquivo EXISTE. Se você tem um arquivo chamado test.php, você não pode simplesmente solicitar o test.phps
Para resolver esse problema, você pode usar mod_rewrite para forçar um manipulador. Por exemplo, esta regra está na documentação do mod_rewrite como um bom exemplo de mudança no handler em mod_rewrite
RewriteEngine On
RewriteRule ^(/source/.+\.php)s$ $1 [H=application/x-httpd-php-source]
ou você pode criar um link simbólico, mas precisará fazer isso para cada arquivo manualmente (ou script) e para novos arquivos.
ln -s test.php test.phps
Uma maneira de resolver isso é que você precisará de um script adicional que simplesmente produz a fonte do arquivo especificado. Então você pode escrever uma regra de reescrita para reescrever
em
Um problema importante com isso é a segurança. Certifique-se de que você só pode enviar os arquivos desejados e não qualquer arquivo (como / etc / passwd) !!
Tags php .htaccess apache-2.2