Как добавить код / ​​файл PHP в файлы HTML (.html)?


97

Я не могу использовать PHP на своих HTML-страницах. Например, index.html. Я пробовал использовать оба:

<? contents ?> 

и

<?php contents ?> 

Ни то, ни другое не работает. Мой сервер предлагает PHP, и когда я использую .phpрасширение, оно работает правильно. Это проблема или мне нужно изменить настройки php.ini?


2
Вам нужно будет изменить свой сервер (я предполагаю, что apache) для обслуживания файлов html как php, но почему вы хотите, чтобы расширение было html вместо php?
Explosion Pills


@ExplosionPills Я сделал это с помощью IIS v7! и это возможно!
отменено

@Death Я не имел в виду, что это можно сделать только с помощью apache, я просто предположил, что он использует apache.
Explosion Pills

1
Какая ужасная идея. Используйте редиректы, чтобы сохранить SEO. Используйте .html для HTML и .php для PHP.
Alien Technology

Ответы:


142

Вы не можете запускать PHP в файлах .html, потому что сервер не распознает это как допустимое расширение PHP, если вы этого не укажете. Для этого вам нужно создать файл .htaccess в корневом веб-каталоге и добавить в него эту строку:

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

Это укажет Apache обрабатывать файлы с расширением .htm или .html как файлы PHP.


15
Хотя это правильно, я думаю, что более важный вопрос: зачем это делать? Более того, он должен обновить конфигурацию сервера, а не использовать его, .htaccessесли это возможно.
Explosion Pills

11
Я делал это много раз, чтобы скрыть тот факт, что я использую PHP (в дополнение к другим вещам)
никб

3
@nickb - безопасность через неизвестность?
Натан Лонг,

2
@NathanLong w3.org/TR/cooluris В частности, «Держите специфичные для реализации фрагменты, такие как .php и .asp, из ваших URI, возможно, вы захотите изменить технологии позже». в разделе 4.5.
Эрик Финн

4
@EricFinn - это хороший ориентир. Но иметь .htmlфайлы серверного процесса как PHP даже не нужно и даже не полезно для его выполнения. Вы хотите, чтобы пользователи посетили example.com/foo. Вы можете использовать этот URL-адрес для обслуживания содержимого PHP независимо от имен файлов на вашем сервере. Если пользователи уже сделали foo.htmlзакладки, вы все равно можете работать foo.phpбез переименования файла.
Натан Лонг,

20

Я думаю, что запись PHP в файл .html сбивает с толку и противоречит естественности. Почему ты бы так поступил??

В любом случае, если вы хотите запускать файлы PHP и отображать их как .html в адресной строке, самым простым решением было бы использовать .php как обычно и написать правило в своем .htaccess следующим образом:

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

Что делать, если я использую PHP + HTML? какой формат я должен использовать? Я очень запутался. На моей странице действительно короткий код на основе PHP и много кодов в HTML. Итак, что я собирался сделать, так это создать файл HTML. Это плохая привычка?
Hoon

3
Формат должен быть .php, поскольку файлы .html предназначены для содержания только HTML-кода.
Дэвид Моралес

15

Чтобы использовать php в файлах .html, вы должны связать их с вашим процессором PHP в файле конфигурации вашего HTTP-сервера. В 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
Крис Трейи,

13

Вы можете изменить .htaccess, как говорили другие, но самое быстрое решение - переименовать расширение файла в .php


Вы также можете попробовать .phtml
Floggedhorse 09

9

Добавить эту строку

AddHandler application/x-httpd-php .html

чтобы httpd.confподать на то , что вы хотите сделать. Но помните, что если вы это сделаете, ваш веб-сервер будет очень медленным, потому что он будет анализировать даже статический код, который не будет содержать PHP-код. Так что лучше сделать расширение файла, .phtmlа не просто .html.


5
Не забудьте, пожалуйста, не выделять жирным шрифтом весь ответ.
Дэвид Моралес

7

За то .html анализа файлов вам необходимо установить соответствующий обработчик в конфигурации вашего сервера.

Для Apache httpd 2.X это следующая строка

AddHandler application/x-httpd-php .html

Информацию об установке вашего конкретного сервера см. В документации по PHP .


6

По умолчанию вы не можете использовать PHP на HTML-страницах.

Для этого измените файл .htacccess следующим образом:

AddType application/x-httpd-php .html

4

Если у вас есть только php-код в одном html-файле, но есть несколько других файлов, которые содержат только 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>

Это сделает исполняемый файл PHP ТОЛЬКО в файле "yourpage.html", а не на всех ваших html-страницах, что предотвратит замедление работы всего вашего сервера.

Что касается того, почему кто-то может захотеть обслуживать php через файл html, я использую функцию IMPORTHTML в электронных таблицах Google для импорта данных JSON с внешнего URL-адреса, который необходимо проанализировать с помощью php, чтобы очистить его и создать таблицу html. Пока я не нашел способа импортировать файл .php в электронные таблицы Google, поэтому для работы функции его необходимо сохранить как файл .html. Возможность обслуживания php через файл .html необходима для этого конкретного использования.


Очень практично.
Quantme

4

Создайте пустой файл с помощью блокнота и назовите его .htaccess. Затем скопируйте этот файл в каталог своего проекта, добавьте эту строку и сохраните.

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

в противном случае сохраните файл .html, используя .php, поскольку php может поддерживать html, и сохраните его в пути computer / var / www / html (linux)


1
Спасибо за внимание к тем, кто даже не знает, как создать файл .htaccess.
Quantme

0

AJAX также возможен. По сути, вам нужны данные со страницы php. Когда у вас есть данные, вы можете в любом случае отформатировать их в javascript и отобразить.

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

СОВРЕМЕННАЯ ПЕРЕСМОТР: теперь вам также необходимо исправить это, изменив малоизвестный «security.limit_extensions» в php-fpm, сделав это. Вы, вероятно, уже знаете хорошо документированный механизм изменения apache на 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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.