Como adiciono código / arquivo PHP a arquivos HTML (.html)?

97

Não consigo usar PHP em minhas páginas HTML. Por exemplo index.html,. Tentei usar os dois:

<? contents ?> 

e

<?php contents ?> 

Nenhum desses funciona. Meu servidor oferece PHP e, quando uso uma .phpextensão, ele funciona corretamente. Isso é um problema ou preciso alterar as preferências no php.ini?

Hoon
fonte
2
Você teria que mudar seu servidor (presumo que o apache) para servir arquivos html como php, mas por que você quer que a extensão seja html em vez de php?
Pílulas de explosão de
@ExplosionPills Eu fiz isso usando IIS v7! e é possível!
desfeito em
@Death eu não quero dizer que ele pode única ser feito com apache, eu só assumiu que ele estava usando apache.
Pílulas de explosão de
1
Que ideia horrível. Use redirecionamentos para salvar seu SEO. Use .html para HTML e .php para PHP.
Alien Technology

Respostas:

142

Você não pode executar o PHP em arquivos .html porque o servidor não reconhece isso como uma extensão válida do PHP, a menos que você solicite. Para fazer isso, você precisa criar um arquivo .htaccess em seu diretório raiz da web e adicionar esta linha a ele:

AddType application/x-httpd-php .htm .html

Isso dirá ao Apache para processar arquivos com extensão .htm ou .html como arquivos PHP.

John Conde
fonte
15
Embora esteja certo , acho que uma questão mais importante é por que fazer isso? Além disso, ele deve atualizar a configuração do servidor em vez de usar, .htaccessse for uma opção.
Explosion Pills
10
Já fiz isso várias vezes para esconder o fato de que estou usando PHP (além de outras coisas)
nickb
3
@nickb - segurança através da obscuridade?
Nathan Long
2
@NathanLong w3.org/TR/cooluris Especificamente, "Mantenha partes e partes específicas da implementação, como .php e .asp fora de seus URIs, você pode querer mudar de tecnologia mais tarde." na seção 4.5.
Eric Finn
4
@EricFinn - essa é uma boa orientação. Mas ter os .htmlarquivos de processo do servidor como PHP não é nem mesmo necessário, ou útil, para segui-lo. Você deseja que os usuários visitem example.com/foo. Você pode usar esse URL para servir conteúdo PHP, independentemente dos nomes de arquivo em seu servidor. Se os usuários já foo.htmlmarcaram, você ainda pode servir foo.phpsem renomear o arquivo.
Nathan Long
20

Acho que escrever PHP em um arquivo .html é confuso e antinatural. Por que você faria isso??

De qualquer forma, se o que você deseja é executar arquivos PHP e mostrá-los como .html na barra de endereço, uma solução mais fácil seria usar .php normalmente, e escrever uma regra em seu .htaccess como esta:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
fonte
E se eu usar PHP + HTML? qual formato devo usar? Estou bastante confuso. Minha página tem um código muito curto baseado em PHP e muitos códigos em HTML. Então o que eu ia fazer era criar um arquivo HTML. É um mau hábito?
Hoon
3
O formato deve ser .php, visto que os arquivos .html devem conter apenas código HTML.
David Morales
15

Para usar php em arquivos .html, você deve associá-los ao seu processador PHP no arquivo de configuração do servidor HTTP. No Apache, isso se parece com isto:

AddHandler application/x-httpd-php .html
Chris Trahey
fonte
você gostaria de comentar sobre a diferença entre AddHandlere AddType? Obrigado.
PatrickT
1
@PatrickT A maneira mais simples de comparar é que AddHandler é um mapeamento de "entrada" - ele mapeia uma extensão de arquivo de entrada para um manipulador. AddType modifica o cabeçalho do tipo MIME de saída. Veja a nota aqui: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Você pode modificar .htaccess como outros disseram, mas a solução mais rápida é renomear a extensão do arquivo para .php

CAAY
fonte
Você também pode tentar .phtml
Floggedhorse,
9

Adicione esta linha

AddHandler application/x-httpd-php .html

para httpd.confarquivar o que você deseja fazer. Mas lembre-se, se você fizer isso, seu servidor web ficará muito lento, porque ele analisará até mesmo código estático que não conterá código php. Portanto, a melhor maneira será fazer a extensão do arquivo em .phtmlvez de apenas .html.

Badar
fonte
5
Lembre-se de não escrever sua resposta inteira em negrito, por favor.
David Morales
7

Para ter .html arquivos também sejam analisados, você precisa definir o manipulador apropriado na configuração do seu servidor.

Para Apache httpd 2.X, esta é a seguinte linha

AddHandler application/x-httpd-php .html

Consulte a documentação do PHP para obter informações sobre a instalação de seu servidor específico.

Sirko
fonte
6

Por padrão, você não pode usar PHP em páginas HTML.

Para fazer isso, modifique seu arquivo .htacccess com o seguinte:

AddType application/x-httpd-php .html
Kerry Ritter
fonte
4

Se você tiver apenas o código php em um arquivo html, mas vários outros arquivos que contenham apenas o código html, você pode adicionar o seguinte ao seu arquivo .htaccess para que ele sirva apenas esse arquivo específico como php.

<Files yourpage.html>
AddType application/x-httpd-php .html 
//you may need to use x-httpd-php5 if you are using php 5 or higher
</Files>

Isso tornará o PHP executável SOMENTE no arquivo "yourpage.html" e não em todas as suas páginas html, o que evitará a lentidão em todo o servidor.

Quanto ao motivo de alguém querer servir php através de um arquivo html, eu uso a função IMPORTHTML em planilhas do Google para importar dados JSON de um url externo que deve ser analisado com php para limpá-lo e construir uma tabela html. Até agora, não encontrei nenhuma maneira de importar um arquivo .php para as planilhas do Google, então ele deve ser salvo como um arquivo .html para que a função funcione. Ser capaz de servir php através de um arquivo .html é necessário para esse uso específico.

MistyDawn
fonte
Muito prático.
quantme 01 de
4

Crie um arquivo vazio usando o bloco de notas e nomeie-o .htaccess. Em seguida, copie esse arquivo no diretório do projeto, adicione esta linha e salve.

AddType application/x-httpd-php .htm .html

caso contrário, salve o arquivo .html usando .php, pois php pode suportar html, e salve-o no caminho computer / var / www / html (linux)

Progga Ilma
fonte
1
Obrigado por considerar aqueles que nem sabem criar um arquivo .htaccess.
quantme 01 de
0

AJAX também é uma possibilidade. Efetivamente, você deseja dados da página php. Depois de ter os dados, você pode formatar de qualquer maneira em javascript e display.

var xmlhttp = new XMLHttpRequest();
var url = "risingStars.php";

xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        getDbData(this.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();


function getDbData(response) {

//do whatever you want with respone
}
Ravi Ganesh
fonte
0

REVISÃO MODERNA: agora você também precisa corrigi-lo alterando o pouco conhecido '' security.limit_extensions 'no php-fpm fazendo isso. Você provavelmente já conhece o mecanismo bem documentado de alterar o apache para AddHandler / AddType. Não entrarei nisso aqui.

  1. VOCÊ DEVE descobrir onde php-fpm / conf está em sua configuração. Eu fiz isso fazendo isso

    # grep -rnw '/etc/' -e 'security.limit_extensions'

  2. Eu peguei de volta

    '/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'

  3. vá para este arquivo, edite-o e CERTIFIQUE-SE DE QUE VOCÊ PERCEBE QUE É COMENTADO EX .: mude de ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: note que ";"- esta linha está DESABILITADA por padrão - e você não precisa de todas as extensões sem sentido, na verdade elas são provavelmente perigoso .. mude para 'security.limit_extensions = .php .htm'<- observe que o ponto e vírgula foi removido. então reinicie o apache / (ou nginx) e reinicie o php-fpm# service php-fpm restart # service httpd restart

Sr. Heelis
fonte
-2

Para combinar HTML e PHP, você pode usar arquivos .phtml.

Eduardo guardado
fonte