Apache, PHP kodunu çalıştırmak yerine gösterir


107

Son zamanlarda bilgisayarıma PHP ve Apache kurmaya çalışıyorum. Saatler sonra kurulurlar. Herkesin söylediği gibi httpd.conf ve php.ini dosyalarını değiştirdim. Daha sonra basit bir PHP betiği oluşturdum:

<?php phpinfo(); ?>

Ama onunla çalıştırmayı denediğimde, çalıştırmak http://127.0.0.1/phpinfo.phpyerine sadece kaynak kodunu gösteriyor. Apache 2, PHP 5 ve Windows Vista kullanıyorum.

DÜZENLENMİŞ HATLAR:

PHP.INI:

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

phpinfo.php dosyasına .php dosyasını okunabilir kılan bazı başlıklar eklediniz mi?

@Peteris hayır tüm senaryom sorumda değil
imulsion

basit bir komut dosyası deneyin: <?php echo "Hello world"; ?>Merhaba dünya mı gösteriyor? kodu görüntülerse, @RabNawaz sunucunuzun doğru yapılandırılmadığını nasıl söyledi?

Kodu tekrar görüntüler :(
imulsion

1
php dosyanıza nereden erişiyorsunuz? php dosyasını sunucunuz tarafından yürütmek için dosyalarınızı uygun web kök dizinine koymanız gerektiğini lütfen unutmayın. ve web tarayıcınızda http://localhost/veya olarak erişinhttp://127.0.0.1/
Ibrahim Azhar Armar

Yanıtlar:


90

Php'yi etkinleştirmelisiniz! mods-enabledAdında /etc/apache2/bir dosya bulup bulmadığınızı görmek için Apache dizinindeki (varsayılan:) klasörü kontrol edin php. Uzantıyı hatırlamıyorum ama sanırım .so.

Ayrıca /var/log/apache2/error.logbaşka hatalarınız olup olmadığını kontrol edin .


8
koştun mu: a2enmod php5
Daniel Figueroa

6
apache dizinimde mods_enabled klasörü yok
imulsion

@imulsion benim durumumda / etc / apache2 / altında modlar etkinleştirilmişti
Silveri

6
Php7 için benim durumumda, yapmak zorundaydım a2enmod php7.0ve sorunumu çözdü. Bir şekilde bu gönderiye ulaşmak bütün gün sürdü!
Rorschach

3
Denilen dosya yok phpiçinde mods-enabledşimdi ne? Bu cevap bazı şeyleri açıklamıyor
Siyah

61

Vay canına, burada birçok çözüm var! İşte Ubuntu 16.04'te yaptığım şey :

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart

--reinstallApt-get'e ekleyerek benim için çalıştı . Php modülü / apache yüklemesi kirli olabilir.
Glastis

Bu benim için Digital Ocean'ın Ubuntu 16.04 sunucusunda çalıştı Teşekkürler
Sushant Bhargav

bu bana aşağıdaki hataları veriyor: Considering conflict php5 for php7.0,, Considering conflict mpm_worker for mpm_preforkvb ... ve apache2 yeniden başlatma başarısız
mrid

Eğer alırsanız Considering conflict php5 for php7.2gidip /etc/apache2/mods-availableve silmephp5.*
Simon Epskamp

39

PHP 7 için (önceki sürümler için de geçerli olabilir), ancak bunu yapmak zorundaydım:

Bunu /etc/apache2/apache2.conf dosyasının altına ekleyin

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Bunu terminalden çalıştırın:

sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7

O halde, bir şeyleri değiştirdiğinizi anlaması için Apache'yi yeniden başlatmayı unutmayın:

sudo service apache2 restart

Bu, şu adresin özetidir: https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/


3
Bunu OSX El Capitan'da PHP 5.6 için yapmak zorundaydım. (Stock apache, ancak homebrew php56 kullanılıyor)
rfay

1
Windows'ta da çalışır (Windows'ta terminal komutlarını çalıştırmanız gerekmediği anlamına gelir) Beni sonsuz aramalardan kurtardığınız için teşekkürler.
che-azeh

kaynaktan yüklerken, bu dosya eşlemesi gerekliydi. (yapılandırma ve
yapım

Örnek httpd.conf dosyasında bir milyar yorum var; php için neden olmadığını kimse açıklayabilir mi? Nadiren kullanılan bir şey değil.
Danial

@Danial httpd.apache.org/support.html , belgeleri bulabileceğiniz, hataları bildirebileceğiniz ve sorular sorabileceğiniz (örneğin, httpd.conf içinde PHP kullanmanın mantıklı bir örneği olmadığı gibi) bir dizi yönteme sahiptir
RyanNerd

24

dosyayı aç

/etc/apache2/httpd.conf

ve değişim

#LoadModule php5_module libexec/apache2/libphp5.so

içine

LoadModule php5_module libexec/apache2/libphp5.so

Öyleyse, PHP modülü yükünü httpd.conf


Benim durumumda satır php7_module ile başladı - ama aksi halde bu benim için çalıştı!
b0rgBart3


6

Benim için işe yarayan farklı bir cevap. Bu kurmak mı[sudo] apt-get install libapache2-mod-php5.X


1
Benimki benzerdi. İlgili paketleri bulan "sudo apt-cache search ^ libapache2 | grep php" yaptım ve ardından "sudo apt-get install libapache2-mod-php" yükledim. libapache2-mod-php7.0 zaten kurulmuştu.
VectorVortec

3

Pekala, yukarıda veya daha önce söylenenleri denediyseniz (olası nedenlerdir) ve kodu çalıştırmak yerine hala görüntülüyorsa, o zaman yanlış yaptığınız ve ele alınmamış bir şey vardır. Php kodunuza erişmek için kullandığınız url; bazı insanlar .php dosyasını web tarayıcısına sürükleyerek php kodlarını çalıştırmaya çalışırlar. bu yanlış bir uygulamadır ve bu tür bir soruna yol açabilir. Bir dosyayı C: // wamp / www klasörüne "test.php" olarak kaydettiyseniz, bu dosyaya şu şekilde erişmelisiniz: localhost: //test.php. bu şekilde eriştiğinizde bu tür bir hata ortaya çıkacaktır: localhost: //wamp/www/test.php

Umarım orada birine yardım etmişimdir. o / ~ Daniel


3

Olağandışı bir durum olsa da, birisinin yolda yardımcı olması durumunda benim için işe yarayan şeyi yayınlamak.

Web sunucumu varsayılanlardan daha yüksek bir php sürümünü kullanmaya zorlamak için bir işleyici ayarlamıştım. 5.1 vardı, ancak 5.6'yı istedim, bu yüzden bunu aldım:

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

htaccess dosyamda.

Sitemi yerel olarak çalıştırmaya çalışırken, orada olması, tarayıcıya php kodunun çıkmasına neden oldu. Onu kaldırmak sorunu çözdü.


3

Apache, sorunu düzeltmek yerine php kodunu gösteriyor

1. php5.6 conf veya php7.x conf açıldı

# aşağıdaki komutu:

$ sudo vi /etc/apache2/mods-enabled/php5.6.conf

2. Aşağıdaki satırlara yorum yapıldı

görüntü açıklamasını buraya girin

3. Sunucuyu yeniden başlattı

$ sudo hizmeti apache2 yeniden başlat

4 Keyfini çıkarın :)


2

.Htaceess dosyanızı silebilir ve sistemin yeni (boş veya temel) bir dosya oluşturmasına izin verebilirsiniz . Eklediğiniz bazı satırlar yanlış ifadeler olabilir veya soruna içindeki başka bir şey neden olabilir. Daha sonra soruna neyin neden olduğunu görmek için eski .htaccess dosyanızdan satır satır ekleyebilirsiniz .

Bu benim için çalıştı. Benim durumumda makineye php uzantılarını görüntülememesini söyleyen satırlar problemdi ( RewriteCond ve RewriteRule ). Eski .htaccess dosyam paylaşılan bir sunucuda gayet iyi çalıştı, ancak bu sorun VPS'ye geçtiğimde ortaya çıktı.


Ayrıca CORS aptallığıyla karşılaşırsanız: çalıştırın sudo a2enmod headersve sudo a2enmod rewrite(Apache'yi yeniden başlatmayı unutmayın).
RyanNerd

2

Önerileri için bu konudaki diğerlerine teşekkür ederiz. Bahsedilen adımları izleyerek, apache sunucusunun içindeki bir loaddosyada sözdizimi hatasını bildirmeye başlayamadığını buldum /etc/apache2/mods-enabled. Hem php7.0 hem de php7.1'in etkinleştirildiği ortaya çıktı.

a2dismod php7.0
systemctl restart apache2

ve php yeniden doğru şekilde oluşturulur.


1

userdir modülü etkinse ve siteniz bir userdir (~ / public_html) içindeyse, /etc/apache2/mods-enabled/php5.conf dosyasını kontrol etmelisiniz. Aşağıdaki bölüm, çalışmasını sağlar (Ubuntu 14.10'da ütopik):

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>

1

Bir ubuntu kullanıcısıysanız, apache'yi kurduktan sonra yeni kurulumda aşağıdaki komutu çalıştırmalısınız.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Benim durumumda iyi çalışıyor.


1

Benim için ne işe yaradı:

Aktif httpd.conf'ta bul

<IfModule mime_module>
...
</IfModule>

Aşağıdakiler eksikti

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

Apache'yi yeniden başlattıktan sonra, .php dosyaları doğru şekilde çözümlenir.


1

Yukarıdakilerin hiçbiri uygulanmadı veya benim için çalışmadı ... CentOS 6 üzerinde PHP7, Apache Httpd 2.2

Aslında ters yapmanız gerekir ... Ben Apache ÖNCE (yum ile tümü) php yüklü, geçerli: o zaman, öncelikle PHP hep yüklemek Apache ve daha sonra Nitekim, büyük olasılıkla eksik ... çalışır libphp7.sove libphp7-zts.sode/etc/httpd/modules/

PHP'yi kaldırmadan yine de kurtarabildim. Sihirli satırı ekledim /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php Ve sonra şunu çalıştırın:yum install php php-mysql


1

PHP7 ve Apache2.4 için yapmanız gereken tek şey bu:

sudo vim /etc/httpd/conf/httpd.conf

En alta gidin ve aşağıdakileri ekleyin (tek başına):

<FilesMatch "\.*">
SetHandler application/x-httpd-php
</FilesMatch>

Apache şimdi her şeyi PHP ile çalıştıracak. Sahip olduğunuz tek şey html ve php dosyalarıysa, bu sizin için iyi çalışacaktır. Başka türde dosyalarınız varsa, dosya eşleştirmesini durumunuza göre uyarlamanız gerekir. Bunu phpMyAdmin ile test ettim ve bir problemi yok gibi görünüyor .... şimdiye kadar.

Burada tüm insanların bahsettiği diğer şeylerin hiçbiri benim için gerekli değildi. "AddType Application ....." şeyini doğru noktaya koyduğumda, Apache bana o modülün zaten yüklendiğini ve atladığını söyledi.

Daha fazla bilgi burada bulunabilir: https://httpd.apache.org/docs/2.4/mod/core.html#filesmatch

Kurulumum şu şekilde yapıldı:

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

Okumadıysanız, bunu da okumalısınız: https://httpd.apache.org/docs/current/howto/htaccess.html#when


0

Bu, MAMP'da $ _POST çalıştırırken de başıma geliyordu. Tüm .ini ve httpd dosyalarımın tümü doğru bir şekilde kurulmuştu. Form işleme yapıyorsanız ve bir html belgeniz varsa ve bilgiyi $ POST çalıştıran bir php formhandler'a gönderiyorsanız, html dosyasını localhost'tan sunucunuz aracılığıyla çalıştırdığınızdan emin olun, sadece yerel olarak değil.

Bu, html belgelerini çalıştırmak için yaptığım bir kısayoldur, sadece dizinimdeki html dosyasını tıklayıp web tarayıcımda başlatarak, gerçekte php'nin formunuzda işlenip işlenmediğini kontrol etmek için html'nizi sunucularınız üzerinden çalıştırmanız gerekir. Göz ardı ettiğim çok basit bir protokol.

Misal:

Yanlış: file:///Applications/MAMP/htdocs/form/form.html

Sağ: http://localhost:your port number/form/form.html

Şimdi, gönder düğmenize tıkladığınızda php işlenmelidir


0

Modülün Debian / Ubuntu varsayılan yapılandırmasının neden olduğu aynı sorunu yaşadım suphp. suPHP_Engine offTarayıcıda php kaynaklarının gösterilmesiyle sonuçlanan bütün / usr / share için içeriyordu . İle devre dışı bırakmak a2dismod suphpgeçici çözümdü.


0

Ben de aynı sorunu yaşadım. Bir php dosyası çalıştırdığımda, web tarayıcısı bana onu yürütmek yerine php kodunu gösterdi. Birçok kez denedim: wampserver64'ü kaldırın / yeniden yükleyin, PHP / Apache ayarları / modülleri etrafında çalışma, vb. 2 gün sonra: php dosyasını notepad ++ içinde çalıştırmayı denediğimde "ctrl +" varsayılan kombinasyonuna basarak fark ettim. krom için alt + üst karakter + R ". Php dosyamı Chrome'un adres çubuğunda "file /// C: / wamp64 / www / bla / bla .." gibi çalıştırmaya çalışıyordu. Benim sorunum buydu. Notepad ++ 'yı yerel ana bilgisayarda php çalıştırmak için yapılandırma sayfasına göre değişiklikleri yaptım. . Sorunum çözüldü. Ama 2 gün sonra ..


0

Xampp (apache) 'yi yönetici olarak çalıştırın. Google chrome türünde:

localhost/<insert folder name here>/<insert file name>

yani, oluşturduğunuz klasör "LearnPhp" ise, dosya "bölüm1.php" ise, ardından yazın

localhost/LearnPhp/chapter1.php

Bu klasörü xampp'i indirdiğinizde oluşturulan htdocs klasöründeki xampp klasöründe oluşturdum.


0

Debian 9 çözümü:

touch /etc/apache2/conf-available/php.conf 

Sonraki satırlarda dosyaya ekle:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

O zaman koş:

a2enconf php && service apache2 restart

Bu benim için çalıştı, ancak başlangıçta değil. Varsayılan olarak devre dışı bırakılan kullanıcı dizinlerinde web içeriği çalıştırıyorum. Bunu etkinleştirmek için son bölüme bakın/etc/apache2/mods-available/php7.2.conf
Tony Adams

0

Bazen php sürüm çatışmalarınız varsa, bunun üstesinden gelmek için lütfen aşağıdaki adımları izleyin

Adım 1: Yum listesi yüklendi | grep 'php'

php 5.6 ve php 7.0 gibi birden fazla php sürümünüz varsa, bu çatışma meydana gelecektir

Adım 2: yum Remove ** php sürümünüzü **

3. Adım: Ardından apapche'yi yeniden başlatın /etc/init.d/httpd restartveyaservice apache2 restart


0

Bu çözüm benim için çalıştı. Apache2'yi temizledim ve yeniden yükledim. Temizleme ve kurulumdan sonra oldu. Bu ilk kurulumsa, bu sorunla karşılaşmazsınız.


0

Yukarıdaki birkaç çözümü denedim ancak senaryomuzdaki düzeltme fpm modülünü kurmaktı.

Httpd'yi php'den önce kurmuştuk, bu sorunla bir ilgisi olabilirdi, ancak çözmek için aşağıdakileri kurduk:

yum modül kurulum php: 7.2

Bu, daha sonra etkinleştirdiğimiz php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpm modülünü kurdu:

systemctl etkinleştir --now php-fpm

Bu noktadan sonra /etc/httpd/conf.d/php.conf'u varsayılan olarak bıraktık ve httpd'yi yeniden başlattık

httpd yeniden başlatma hizmeti

Sonra her şey çalıştı.

Umarım bu yardımcı olur, çözmesi gerekenden çok daha uzun sürdü.


0

Aşağıdaki yapılandırmayı şuraya ekle: /etc/apache2/apache2.conf

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Ve yeniden apachearacılığıylasudo service apache2 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.