Як додати PHP-код / ​​файл у файли HTML (.html)?


97

Я не можу використовувати PHP на своїх HTML-сторінках. Наприклад, index.html. Я спробував використовувати обидва:

<? contents ?> 

і

<?php contents ?> 

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


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


@ExplosionPills Я зробив це за допомогою IIS v7! і це можливо!
скасовано

@Death Я не мав на увазі, що це може бути зроблено лише з apache, я просто припустив, що він використовує apache.
Вибухові таблетки

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якщо це варіант.
Вибухові таблетки

11
Я робив це неодноразово, щоб приховати той факт, що я використовую PHP (крім інших речей)
nickb

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. Це шкідлива звичка?
Хун

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

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.


Дуже практично.
квант

4

Створіть порожній файл за допомогою блокнота та назви його .htaccess, потім скопіюйте цей файл у каталог вашого проекту та додайте цей рядок та збережіть.

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

в іншому випадку збережіть файл .html за допомогою .php, оскільки php може підтримувати html, та збережіть його в комп'ютері / var / www / html path (linux)


1
Дякуємо, що розглянули тих, хто навіть не знає, як створити файл .htaccess.
квант

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. перейдіть до цього файлу, відредагуйте його та переконайтесь, що ви зрозуміли, що це коментується EG: змініть його на ';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.