PHP kodunu / dosyasını HTML (.html) dosyalarına nasıl eklerim?


98

HTML sayfalarımda PHP kullanamıyorum. Örneğin index.html,. İkisini de kullanmayı denedim:

<? contents ?> 

ve

<?php contents ?> 

Bunların hiçbiri işe yaramıyor. Sunucum PHP sunuyor ve bir .phpuzantı kullandığımda düzgün çalışıyor. Bu bir sorun mu yoksa içindeki tercihleri ​​değiştirmem gerekiyor php.inimu?


3
Sunucunuzu (apache varsayıyorum) html dosyalarını php olarak sunmak için değiştirmeniz gerekirdi, ama neden uzantının php yerine html olmasını istiyorsunuz?
Explosion Pills


@ExplosionPills IIS v7 kullanarak yaptım! ve mümkün!
geri alındı

@Death Bunun sadece apache ile yapılabileceğini ima etmek istemedim, sadece apache kullandığını varsaydım.
Explosion Pills

1
Ne korkunç bir fikir. SEO'nuzu kaydetmek için yönlendirmeleri kullanın. HTML için .html ve PHP için .php kullanın.
Alien Technology

Yanıtlar:


143

PHP'yi .html dosyalarında çalıştıramazsınız çünkü sunucu bunu siz söylemedikçe geçerli bir PHP uzantısı olarak tanımaz. Bunu yapmak için kök web dizininizde bir .htaccess dosyası oluşturmanız ve bu satırı ona eklemeniz gerekir:

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

Bu, Apache'ye .htm veya .html dosya uzantılı dosyaları PHP dosyaları olarak işlemesini söyleyecektir.


15
Bu doğru olsa da, bence daha önemli bir soru bunu neden yapıyor? Dahası, .htaccesseğer bu bir seçenekse kullanmak yerine sunucu yapılandırmasını güncellemelidir .
Explosion Pills

11
Bunu PHP kullandığım gerçeğini gizlemek için birçok kez yaptım (diğer şeylere ek olarak)
nickb

3
@nickb - belirsizlik yoluyla güvenlik?
Nathan Long

2
@NathanLong w3.org/TR/cooluris Özellikle, ".php ve .asp gibi uygulamaya özgü bit ve parçaları URI'lerinizden uzak tutun, teknolojileri daha sonra değiştirmek isteyebilirsiniz." Bölüm 4.5.
Eric Finn

4
@EricFinn - bu iyi bir kılavuz. Ancak, sunucunun .htmldosyaları PHP olarak işlemesine sahip olmak, onu takip ederken bile gerekli veya yararlı değildir. Kullanıcıların ziyaret etmesini istiyorsunuz example.com/foo. Sunucunuzdaki dosya adlarından bağımsız olarak PHP içeriğini sunmak için bu URL'yi kullanabilirsiniz. Kullanıcılar zaten foo.htmlyer işareti foo.phpkoymuşsa, dosyayı yeniden adlandırmadan sunabilirsiniz .
Nathan Long

20

PHP'yi bir .html dosyasına yazmanın kafa karıştırıcı ve doğal olmayan bir şey olduğunu düşünüyorum. Neden bunu yapasın ki??

Her neyse, istediğiniz PHP dosyalarını çalıştırmak ve adres çubuğunda .html olarak göstermekse, en kolay çözüm .php'yi normal olarak kullanmak ve .htaccess dosyanıza şöyle bir kural yazmak olacaktır:

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

PHP + HTML kullanırsam ne olur? hangi formatı kullanmalıyım? Kafam oldukça karışık. Sayfam PHP tabanlı gerçekten kısa bir kod içeriyor ve HTML'de birçok kod var. Yani yapacağım şey bir HTML dosyası yapmaktı. Bu kötü bir alışkanlık mı?
Hoon

3
.Html dosyalarının yalnızca HTML kodunu içermesi amaçlandığından, biçim .php olmalıdır.
David Morales

15

Php'yi .html dosyalarında kullanmak için, bunları HTTP sunucunuzun yapılandırma dosyasında PHP işlemcinizle ilişkilendirmelisiniz. Apache'de şuna benzer:

AddHandler application/x-httpd-php .html

AddHandlerve arasındaki fark hakkında yorum yapmak ister misiniz AddType? Teşekkürler.
PatrickT

1
@PatrickT Karşılaştırmanın en basit yolu, AddHandler'ın bir "girdi" eşlemesi olmasıdır - gelen bir dosya uzantısını bir işleyiciye eşler. AddType, çıktı MIME türü başlığını değiştirir. Buradaki nota bakın: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey

13

.Htaccess'i başkalarının söylediği gibi değiştirebilirsiniz, ancak en hızlı çözüm dosya uzantısını .php olarak yeniden adlandırmaktır.


Ayrıca, .phtml
Floggedhorse'u

9

Bu satırı ekleyin

AddHandler application/x-httpd-php .html

yapmak istediklerinizi httpd.confdosyalamak için. Ancak unutmayın, bunu yaparsanız web sunucunuz çok yavaş olacaktır çünkü php kodu içermeyen statik kodu bile ayrıştıracaktır. Bu yüzden daha iyi bir yol, dosya uzantısını .phtmlsadece yerine yapmak olacaktır .html.


5
Lütfen cevabınızın tamamını kalın harflerle yazmamayı unutmayın.
David Morales

7

Sahip İçin .htmlsıra çözümlenen dosyaları, sunucu yapılandırmasında uygun işleyicisi ayarlamak gerekir.

Apache httpd 2.X için bu aşağıdaki satırdır

AddHandler application/x-httpd-php .html

Özel sunucu kurulumunuz hakkında bilgi için PHP belgesine bakın .


6

Varsayılan olarak PHP'yi HTML sayfalarında kullanamazsınız.

Bunu yapmak için .htacccess dosyanızı aşağıdakilerle değiştirin:

AddType application/x-httpd-php .html

4

Yalnızca bir html dosyasında php kodunuz varsa, ancak yalnızca html kodu içeren birden çok başka dosyanız varsa, aşağıdakileri .htaccess dosyanıza ekleyebilir, böylece yalnızca o dosyayı php olarak sunacaktır.

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

Bu, PHP'yi YALNIZCA "yourpage.html" dosyasında çalıştırılabilir hale getirir ve tüm html sayfalarınızda değil, sunucunuzun tamamında yavaşlamayı engeller.

Birinin neden bir html dosyası aracılığıyla php sunmak isteyebileceğine gelince, JSON verilerini harici bir url'den içe aktarmak için Google elektronik tablolarında IMPORTHTML işlevini kullanıyorum, bu verileri php ile ayrıştırılması gereken harici bir url'den temizlemek ve html tablosu oluşturmak. Şimdiye kadar bir .php dosyasını google elektronik tablolarına aktarmanın bir yolunu bulamadım, bu nedenle işlevin çalışması için bir .html dosyası olarak kaydedilmesi gerekiyor. Bu özel kullanım için bir .html dosyası aracılığıyla php'ye hizmet verebilmek gereklidir.


Çok pratik.
quantme

4

Not defteri kullanarak boş bir dosya oluşturun ve .htaccess olarak adlandırın, ardından bu dosyayı proje dizininize kopyalayın ve bu satırı ekleyin ve kaydedin.

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

aksi takdirde .html dosyasını .php kullanarak kaydedin, çünkü php html'yi destekleyebilir ve bilgisayarı / var / www / html yoluna (linux) kaydedin


2
.Htaccess dosyası oluşturmayı bile bilmeyenleri düşündüğünüz için teşekkür ederiz.
quantme

0

AJAX da bir olasılıktır. Etkili bir şekilde php sayfasından veri istersiniz. Verilere sahip olduğunuzda, javascript olarak biçimlendirebilir ve görüntüleyebilirsiniz.

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 REVİZYON: şimdi bunu yaparak php-fpm'deki az bilinen '' security.limit_extensions '' ı değiştirerek düzeltmeniz gerekiyor. Muhtemelen apache'yi AddHandler / AddType olarak değiştirmenin iyi belgelenmiş mekanizmasını zaten biliyorsunuzdur. Burada buna girmeyeceğim.

  1. Kurulumunuzda php-fpm / conf'in nerede olduğunu bulmanız GEREKİR. Bunu yaparak yaptım

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

  2. Bunu geri aldım

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

  3. bu dosyaya gidin, düzenleyin ve YORUMLANMIŞ OLDUĞUNU GERÇEKLEŞTİRDİĞİNİZDEN EMİN OLUN ÖRNEK: ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: ";"- bu satır aslında varsayılan olarak DEVRE DIŞI bırakılmıştır - ve tüm saçma uzantılara ihtiyacınız yoktur, aslında bunlar muhtemelen tehlikelidir .. 'security.limit_extensions = .php .htm'<olarak değiştirin - noktalı virgülün artık kaldırıldığını unutmayın. sonra apache / (veya nginx) 'i yeniden başlatın ve php-fpm'yi yeniden başlatın# service php-fpm restart # service httpd restart


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.