PHP não consegue ler arquivos contendo código PHP como arquivos de texto
-
19-08-2019 - |
Pergunta
Eu tropecei no seguinte peculiaridade:
$ handle = fopen (realpath ( "../ pasta / files.php"), "r");
não pode ler um arquivo, mas assim que eu remover tags PHP do arquivo, torna-se legível e meus scripts imprime o conteúdo do arquivo não vazio na página. Além disso, file.php é nunca executado, então eu me pergunto por que é o problema.
Eu acho que de alguma forma Apache ou PHP não deixar arquivos lidos contendo tags PHP PHP como texto apenas.
Como posso habilitá-lo para o meu arquivo particular (Claro fazê-lo globalmente seria inseguro)?
Usando 5.2.x PHP e Apache 2.0
Solução
eu entendi. Eu estava usando o Google Chrome para depurar a página, e eu percebi que ao visualizar a fonte, o Chrome esconde tags PHP, por algum motivo. Corri o mesmo teste no Firefox, e ver a fonte provou que tudo estava bem.
Aqui estão os detalhes do teste:
Código:
$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}
arquivo para ser lido (test.php):
testing <?php testing2 ?> testing3
Rendering (em ambos Chrome e Firefox):
testing testing3
Ver código (usando o Firefox):
testing <?php testing2 ?> testing3
Ver código-fonte (usando Chrome - fonte de meu erro):
testing testing3
Outras dicas
Você tem certeza de que você está interpretando a saída corretamente? Se você imprimir o conteúdo do arquivo diretamente para a sua saída da página, o navegador não irá exibir o texto dentro colchetes porque ele acha que é uma tag. Servir o seu conteúdo como text/plain
, ou usar o comando "view source" do seu navegador para certificar-se de que você está olhando para o que está realmente lá, e não apenas o que o navegador escolheu para mostrar.
Hmm file_get_contents () está trabalhando para mim. É emitir apenas para fopen?
Edit: o erro que você obtenha exatamente
?Wadih M. resolveu o problema. PHP etiquetas esconde toda a saída da fonte de php fechado-tag no navegador, mas mostra Ver obtê-los. Obrigado!
Eu estou usando htmlspecialchars($line);
Ele resolveu o problema.
renomeie o arquivo Leia-o obter os seus dados mude-os rerename seu arquivo:)