HTML 페이지에서 PHP를 사용할 수 없습니다. 예 : index.html
. 두 가지를 모두 사용해 보았습니다.
<? contents ?>
과
<?php contents ?>
둘 다 작동하지 않습니다. 내 서버는 PHP를 제공하며 .php
확장을 사용하면 제대로 작동합니다. 이것이 문제 php.ini
입니까? 아니면 에서 기본 설정을 변경해야 합니까?
HTML 페이지에서 PHP를 사용할 수 없습니다. 예 : index.html
. 두 가지를 모두 사용해 보았습니다.
<? contents ?>
과
<?php contents ?>
둘 다 작동하지 않습니다. 내 서버는 PHP를 제공하며 .php
확장을 사용하면 제대로 작동합니다. 이것이 문제 php.ini
입니까? 아니면 에서 기본 설정을 변경해야 합니까?
답변:
.html 파일에서 PHP를 실행할 수 없습니다. 사용자가 지시하지 않는 한 서버가이를 유효한 PHP 확장으로 인식하지 못하기 때문입니다. 이렇게하려면 루트 웹 디렉토리에 .htaccess 파일을 만들고 여기에 다음 줄을 추가해야합니다.
AddType application/x-httpd-php .htm .html
이것은 Apache가 .htm 또는 .html 파일 확장자를 가진 파일을 PHP 파일로 처리하도록 지시합니다.
.htaccess
옵션 인 경우 사용 하는 대신 서버 구성을 업데이트해야합니다 .
.html
파일을 PHP로 처리 하도록하는 것은이를 따르는 데 필요하거나 도움이되지 않습니다. 사용자가을 방문하기를 원합니다 example.com/foo
. 해당 URL을 사용하여 서버의 파일 이름에 관계없이 PHP 콘텐츠를 제공 할 수 있습니다. 사용자가 이미 foo.html
북마크 한 foo.php
경우 파일 이름을 변경하지 않고도 서비스를 제공 할 수 있습니다 .
.html 파일에 PHP를 작성하는 것은 혼란스럽고 자연스럽지 않다고 생각합니다. 왜 그렇게 하시겠습니까 ??
어쨌든 원하는 것이 PHP 파일을 실행하고 주소 표시 줄에 .html로 표시하는 것이라면 가장 쉬운 해결책은 .php를 정상적으로 사용하고 다음과 같이 .htaccess에 규칙을 작성하는 것입니다.
RewriteRule ^([^.]+)\.html$ $1.php [L]
.html 파일에서 php를 사용하려면 HTTP 서버의 구성 파일에있는 PHP 프로세서와 연결해야합니다. Apache에서는 다음과 같습니다.
AddHandler application/x-httpd-php .html
AddHandler
과 (와) 의 차이점에 대해 말씀해 주 AddType
시겠습니까? 감사.
다른 사람들이 말한 것처럼 .htaccess를 수정할 수 있지만 가장 빠른 해결책은 파일 확장자를 .php로 바꾸는 것입니다.
이 줄 추가
AddHandler application/x-httpd-php .html
하는 httpd.conf
당신이 원하는 무엇을 파일. 그러나 이렇게하면 웹 서버가 매우 느릴 것입니다. 왜냐하면 PHP 코드를 포함하지 않는 정적 코드도 구문 분석하기 때문입니다. 따라서 더 나은 방법은 파일 확장자 .phtml
를 .html
.
하나의 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를 제공 할 수 있어야 특정 용도로 사용할 수 있습니다.
메모장을 사용하여 빈 파일을 만들고 이름을 .htaccess로 지정한 다음 해당 파일을 프로젝트 디렉터리에 복사하고이 줄을 추가하고 저장합니다.
AddType application/x-httpd-php .htm .html
그렇지 않으면 .php를 사용하여 .html 파일을 php가 html을 지원할 수 있으므로 컴퓨터 / var / www / html 경로 (linux)에 저장하십시오.
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
}
MODERN REVISION : 이제 php-fpm에서 거의 알려지지 않은 ''security.limit_extensions '를 변경하여이를 수정해야합니다. 아파치를 AddHandler / AddType으로 변경하는 잘 문서화 된 메커니즘을 이미 알고있을 것입니다. 여기서는 다루지 않겠습니다.
설정에서 php-fpm / conf가 어디에 있는지 찾아야합니다. 나는 이것을함으로써 그것을했다
# grep -rnw '/etc/' -e 'security.limit_extensions'
나는 이것을 되찾았다
'/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'
이 파일로 이동하여 편집하고 ';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
HTML과 PHP를 결합하려면 .phtml 파일을 사용할 수 있습니다.