Bagaimana cara menambahkan kode / file PHP ke file HTML (.html)?

97

Saya tidak dapat menggunakan PHP di halaman HTML saya. Misalnya index.html,. Saya sudah mencoba menggunakan keduanya:

<? contents ?> 

dan

<?php contents ?> 

Tak satu pun dari pekerjaan ini. Server saya menawarkan PHP, dan ketika saya menggunakan .phpekstensi, itu berfungsi dengan baik. Apakah ini masalah atau apakah saya harus mengubah preferensi php.ini?

Hoon
sumber
2
Anda harus mengubah server Anda (saya berasumsi apache) untuk menyajikan file html sebagai php, tetapi mengapa Anda ingin ekstensi menjadi html daripada php?
Pil Ledakan
@ExplosionPills Saya telah melakukannya menggunakan IIS v7! dan itu mungkin!
dibatalkan
@Death Saya tidak bermaksud mengatakan bahwa itu hanya dapat dilakukan dengan apache, saya hanya berasumsi dia menggunakan apache.
Pil Ledakan
1
Ide yang mengerikan. Gunakan pengalihan untuk menyimpan SEO Anda. Gunakan .html untuk HTML dan .php untuk PHP.
Teknologi Alien

Jawaban:

142

Anda tidak dapat menjalankan PHP dalam file .html karena server tidak mengenalinya sebagai ekstensi PHP yang valid kecuali Anda menyuruhnya. Untuk melakukan ini, Anda perlu membuat file .htaccess di direktori web root Anda dan menambahkan baris ini ke dalamnya:

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

Ini akan memberi tahu Apache untuk memproses file dengan ekstensi file .htm atau .html sebagai file PHP.

John Conde
sumber
15
Meskipun ini benar, saya pikir pertanyaan yang lebih penting adalah mengapa melakukan ini? Selain itu, dia harus memperbarui konfigurasi server daripada menggunakan .htaccessjika itu adalah opsi.
Pil Ledakan
11
Saya telah melakukan ini pada banyak kesempatan untuk menyembunyikan fakta bahwa saya menggunakan PHP (selain hal-hal lain)
nickb
3
@ nickb - keamanan melalui ketidakjelasan?
Nathan Long
2
@NathanLong w3.org/TR/cooluris Secara khusus, "Jauhkan bit implementasi khusus dan potongan seperti php dan asp dari URI Anda, Anda mungkin ingin teknologi perubahan nanti." di bagian 4.5.
Eric Finn
4
@EricFinn - itu pedoman yang bagus. Tetapi memiliki .htmlfile proses server sebagai PHP bahkan tidak diperlukan, atau membantu, dalam mengikutinya. Anda ingin pengguna berkunjung example.com/foo. Anda dapat menggunakan URL tersebut untuk menyajikan konten PHP apa pun nama file di server Anda. Jika pengguna sudah foo.htmlmem - bookmark, Anda tetap dapat melayani foo.phptanpa mengganti nama file.
Nathan Long
20

Saya pikir menulis PHP menjadi file .html membingungkan dan anti-alami. Kenapa kamu ingin melakukan itu??

Bagaimanapun, jika yang Anda inginkan adalah mengeksekusi file PHP dan menampilkannya sebagai .html di bilah alamat, solusi termudah adalah menggunakan .php seperti biasa, dan tulis aturan di .htaccess Anda seperti ini:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
sumber
Bagaimana jika saya menggunakan PHP + HTML? format apa yang harus saya gunakan? Saya cukup bingung. Halaman saya memiliki kode yang sangat pendek berdasarkan PHP dan ada banyak kode dalam HTML. Jadi yang akan saya lakukan adalah membuat file HTML. Apakah ini kebiasaan buruk?
Hoon
3
Formatnya harus .php, karena file .html hanya berisi kode HTML.
David Morales
15

Untuk menggunakan php dalam file .html, Anda harus mengasosiasikannya dengan prosesor PHP Anda di file konfigurasi server HTTP Anda. Di Apache, itu terlihat seperti ini:

AddHandler application/x-httpd-php .html
Chris Trahey
sumber
maukah Anda mengomentari perbedaan antara AddHandlerdan AddType? Terima kasih.
PatrickT
1
@PatrickT Cara termudah untuk membandingkan adalah bahwa AddHandler adalah pemetaan "masukan" - ini memetakan ekstensi file yang masuk ke penangan. AddType mengubah header tipe MIME keluaran. Lihat catatan di sini: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Anda dapat memodifikasi .htaccess seperti yang dikatakan orang lain, tetapi solusi tercepat adalah mengganti nama ekstensi file menjadi .php

CAAY
sumber
Anda juga dapat mencoba .phtml
Floggedhorse
9

Tambahkan baris ini

AddHandler application/x-httpd-php .html

untuk httpd.confmengajukan apa yang ingin Anda lakukan. Namun perlu diingat, jika Anda melakukan ini maka web server Anda akan sangat lambat, karena akan mengurai bahkan kode statis yang tidak akan berisi kode php. Jadi cara yang lebih baik adalah membuat ekstensi file .phtmldaripada hanya .html.

Badar
sumber
5
Ingatlah untuk tidak menuliskan seluruh jawaban Anda dengan huruf tebal.
David Morales
7

Agar .htmlfile juga diurai, Anda perlu menyetel penangan yang sesuai di konfigurasi server Anda.

Untuk Apache httpd 2.X ini adalah baris berikut

AddHandler application/x-httpd-php .html

Lihat dokumen PHP untuk informasi tentang instalasi server spesifik Anda.

Sirko
sumber
6

Secara default, Anda tidak dapat menggunakan PHP di halaman HTML.

Untuk melakukan itu, ubah file .htacccess Anda dengan yang berikut ini:

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

Jika Anda hanya memiliki kode php dalam satu file html tetapi memiliki beberapa file lain yang hanya berisi kode html, Anda dapat menambahkan berikut ini ke file .htaccess Anda sehingga hanya akan menyajikan file tersebut sebagai 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>

Ini akan membuat PHP HANYA dapat dieksekusi pada file "yourpage.html" dan bukan pada semua halaman html Anda yang akan mencegah perlambatan di seluruh server Anda.

Mengenai mengapa seseorang mungkin ingin melayani php melalui file html, saya menggunakan fungsi IMPORTHTML di google spreadsheet untuk mengimpor data JSON dari url eksternal yang harus diurai dengan php untuk membersihkannya dan membuat tabel html. Sejauh ini saya belum menemukan cara untuk mengimpor file .php ke google spreadsheet sehingga harus disimpan sebagai file .html agar fungsinya berfungsi. Mampu melayani php melalui file .html diperlukan untuk penggunaan khusus itu.

MistyDawn
sumber
Sangat praktis.
Kuantme
4

Buat file kosong menggunakan notepad dan beri nama .htaccess, Kemudian salin file itu ke direktori proyek Anda dan tambahkan baris ini dan simpan.

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

Jika tidak simpan file .html menggunakan .php karena php dapat mendukung html, dan menyimpannya di path komputer / var / www / html (linux)

Progga Ilma
sumber
1
Terima kasih telah mempertimbangkan mereka yang bahkan tidak tahu cara membuat file .htaccess.
Kuantme
0

AJAX juga kemungkinan. Secara efektif Anda menginginkan data dari halaman php. Setelah Anda memiliki data, Anda dapat memformatnya dalam javascript dan tampilan.

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
sumber
0

REVISI MODERN: Anda sekarang juga perlu memperbaikinya dengan mengubah '' security.limit_extensions 'yang sedikit diketahui di php-fpm dengan melakukan ini. Anda mungkin sudah mengetahui mekanisme terdokumentasi dengan baik untuk mengubah apache menjadi AddHandler / AddType Saya tidak akan membahasnya di sini.

  1. ANDA HARUS mencari tahu di mana php-fpm / conf berada di pengaturan Anda. Saya melakukannya dengan melakukan ini

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

  2. Saya mendapatkan ini kembali

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

  3. buka file ini, edit dan PASTIKAN ANDA MENYADARI INI DIKomentari EG: ubah dari ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: perhatikan ";"- baris ini sebenarnya DINONAKTIFKAN secara default - dan Anda tidak memerlukan semua ekstensi yang tidak masuk akal, sebenarnya ekstensi itu mungkin berbahaya .. ubah ke 'security.limit_extensions = .php .htm'<- perhatikan titik koma sekarang dihapus. kemudian restart apache / (atau nginx) dan restart php-fpm# service php-fpm restart # service httpd restart

Tuan Heelis
sumber
-2

Untuk menggabungkan HTML dan PHP Anda dapat menggunakan file .phtml.

Eduardo Guardado
sumber