HTML (.html) 파일에 PHP 코드 / 파일을 어떻게 추가합니까?


97

HTML 페이지에서 PHP를 사용할 수 없습니다. 예 : index.html. 두 가지를 모두 사용해 보았습니다.

<? contents ?> 

<?php contents ?> 

둘 다 작동하지 않습니다. 내 서버는 PHP를 제공하며 .php확장을 사용하면 제대로 작동합니다. 이것이 문제 php.ini입니까? 아니면 에서 기본 설정을 변경해야 합니까?


2
html 파일을 php로 제공하려면 서버 (아파치라고 가정)를 변경해야하지만 확장명이 php 대신 html이되기를 원하는 이유는 무엇입니까?
Explosion Pills


@ExplosionPills IIS v7을 사용하여했습니다! 그리고 가능합니다!
취소

@Death 나는 그것이 아파치 로만 할 수 있다는 것을 암시하려는 것이 아니라 그가 아파치를 사용하고 있다고 가정했습니다.
Explosion Pills

1
정말 끔찍한 생각입니다. 리디렉션을 사용하여 SEO를 저장하십시오. HTML에는 .html을, PHP에는 .php를 사용하십시오.
Alien Technology

답변:


142

.html 파일에서 PHP를 실행할 수 없습니다. 사용자가 지시하지 않는 한 서버가이를 유효한 PHP 확장으로 인식하지 못하기 때문입니다. 이렇게하려면 루트 웹 디렉토리에 .htaccess 파일을 만들고 여기에 다음 줄을 추가해야합니다.

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

이것은 Apache가 .htm 또는 .html 파일 확장자를 가진 파일을 PHP 파일로 처리하도록 지시합니다.


15
이것이 옳지 만 더 중요한 질문은 그렇게 하는가? 또한 .htaccess옵션 인 경우 사용 하는 대신 서버 구성을 업데이트해야합니다 .
Explosion Pills

11
내가 (다른 것들에 추가하여) PHP를 사용하고 있다는 사실을 숨기기 위해 여러 차례에 이런 짓을 한
nickb

3
@nickb-모호함을 통한 보안?
Nathan Long

2
@NathanLong w3.org/TR/cooluris 구체적으로 ".php 및 .asp와 같은 구현 특정 비트 및 조각을 URI에서 유지하십시오. 나중에 기술을 변경하고 싶을 수 있습니다." 섹션 4.5.
Eric Finn 2012

4
@EricFinn-좋은 가이드 라인입니다. 그러나 서버가 .html파일을 PHP로 처리 하도록하는 것은이를 따르는 데 필요하거나 도움이되지 않습니다. 사용자가을 방문하기를 원합니다 example.com/foo. 해당 URL을 사용하여 서버의 파일 이름에 관계없이 PHP 콘텐츠를 제공 할 수 있습니다. 사용자가 이미 foo.html북마크 한 foo.php경우 파일 이름을 변경하지 않고도 서비스를 제공 할 수 있습니다 .
Nathan Long

20

.html 파일에 PHP를 작성하는 것은 혼란스럽고 자연스럽지 않다고 생각합니다. 왜 그렇게 하시겠습니까 ??

어쨌든 원하는 것이 PHP 파일을 실행하고 주소 표시 줄에 .html로 표시하는 것이라면 가장 쉬운 해결책은 .php를 정상적으로 사용하고 다음과 같이 .htaccess에 규칙을 작성하는 것입니다.

RewriteRule ^([^.]+)\.html$ $1.php [L]

PHP + HTML을 사용하면 어떻게 되나요? 어떤 형식을 사용해야합니까? 꽤 혼란 스럽습니다. 내 페이지에는 PHP를 기반으로 한 매우 짧은 코드가 있으며 HTML에는 많은 코드가 있습니다. 그래서 제가하려고했던 것은 HTML 파일을 만드는 것입니다. 이것은 나쁜 습관입니까?
Hoon

3
.html 파일은 HTML 코드 만 포함하도록되어 있으므로 형식은 .php 여야합니다.
David Morales

15

.html 파일에서 php를 사용하려면 HTTP 서버의 구성 파일에있는 PHP 프로세서와 연결해야합니다. Apache에서는 다음과 같습니다.

AddHandler application/x-httpd-php .html

AddHandler과 (와) 의 차이점에 대해 말씀해 주 AddType시겠습니까? 감사.
PatrickT

1
@PatrickT 비교하는 가장 간단한 방법은 AddHandler가 "입력"매핑이라는 것입니다. 들어오는 파일 확장자를 핸들러에 매핑합니다. AddType은 출력 MIME 유형 헤더를 수정합니다. 여기에서 참고를 참조하십시오. httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey

13

다른 사람들이 말한 것처럼 .htaccess를 수정할 수 있지만 가장 빠른 해결책은 파일 확장자를 .php로 바꾸는 것입니다.


또한로 .phtml 시도 할 수
Floggedhorse

9

이 줄 추가

AddHandler application/x-httpd-php .html

하는 httpd.conf당신이 원하는 무엇을 파일. 그러나 이렇게하면 웹 서버가 매우 느릴 것입니다. 왜냐하면 PHP 코드를 포함하지 않는 정적 코드도 구문 분석하기 때문입니다. 따라서 더 나은 방법은 파일 확장자 .phtml.html.


5
전체 답변을 굵게 작성하지 마십시오.
David Morales

7

가지고 들어 .html뿐만 아니라 구문 분석 파일을, 당신은 당신의 서버 설정에서 적절한 핸들러를 설정해야합니다.

Apache httpd 2.X의 경우 다음 줄입니다.

AddHandler application/x-httpd-php .html

특정 서버 설치에 대한 정보 는 PHP 문서 를 참조하십시오 .


6

기본적으로 HTML 페이지에서는 PHP를 사용할 수 없습니다.

이를 위해 다음과 같이 .htacccess 파일을 수정하십시오.

AddType application/x-httpd-php .html

4

하나의 html 파일에 php 코드 만 있지만 html 코드 만 포함 된 다른 파일이 여러 개있는 경우 .htaccess 파일에 다음을 추가하여 특정 파일 만 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>

이렇게하면 모든 html 페이지가 아닌 "yourpage.html"파일에서만 PHP를 실행할 수있어 전체 서버의 속도 저하를 방지 할 수 있습니다.

누군가가 html 파일을 통해 PHP를 제공하려는 이유에 관해서는 Google 스프레드 시트의 IMPORTHTML 함수를 사용하여 PHP로 구문 분석해야하는 외부 URL에서 JSON 데이터를 가져 와서 정리하고 html 테이블을 만듭니다. 지금까지 .php 파일을 Google 스프레드 시트로 가져올 수있는 방법을 찾지 못 했으므로 기능이 작동하려면 .html 파일로 저장해야합니다. .html 파일을 통해 php를 제공 할 수 있어야 특정 용도로 사용할 수 있습니다.


매우 실용적입니다.
quantme

4

메모장을 사용하여 빈 파일을 만들고 이름을 .htaccess로 지정한 다음 해당 파일을 프로젝트 디렉터리에 복사하고이 줄을 추가하고 저장합니다.

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

그렇지 않으면 .php를 사용하여 .html 파일을 php가 html을 지원할 수 있으므로 컴퓨터 / var / www / html 경로 (linux)에 저장하십시오.


1
.htaccess 파일을 만드는 방법을 모르는 분들을 고려해 주셔서 감사합니다.
quantme

0

AJAX도 가능합니다. 효과적으로 PHP 페이지의 데이터를 원할 것입니다. 일단 데이터가 있으면 자바 스크립트로 형식을 지정하고 표시 할 수 있습니다.

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
}

0

MODERN REVISION : 이제 php-fpm에서 거의 알려지지 않은 ''security.limit_extensions '를 변경하여이를 수정해야합니다. 아파치를 AddHandler / AddType으로 변경하는 잘 문서화 된 메커니즘을 이미 알고있을 것입니다. 여기서는 다루지 않겠습니다.

  1. 설정에서 php-fpm / conf가 어디에 있는지 찾아야합니다. 나는 이것을함으로써 그것을했다

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

  2. 나는 이것을 되찾았다

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

  3. 이 파일로 이동하여 편집하고 ';security.limit_extensions = .php .php3 .php4 .php5 .php7'주석 처리 ";"되었는지 확인 하십시오. 예 : <- 에서 변경하십시오 . NB : 참고 -이 행은 기본적으로 비활성화되어 있습니다. 아마도 위험 할 수 있습니다 .. 'security.limit_extensions = .php .htm'<-로 변경하십시오 . 세미콜론이 제거되었습니다. 그런 다음 apache / (또는 nginx)를 다시 시작하고 php-fpm을 다시 시작하십시오.# service php-fpm restart # service httpd restart


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.