Apache menunjukkan kode PHP alih-alih mengeksekusinya

107

Saya baru-baru ini mencoba menginstal PHP dan Apache di komputer saya. Setelah berjam-jam, mereka dipasang. Saya telah memodifikasi file httpd.conf dan php.ini seperti yang dikatakan semua orang. Saya kemudian membuat skrip PHP sederhana:

<?php phpinfo(); ?>

Tetapi ketika saya mencoba menjalankannya dengan http://127.0.0.1/phpinfo.phpitu hanya menunjukkan kode sumber daripada mengeksekusinya. Saya menggunakan Apache 2, PHP 5 dan Windows Vista.

GARIS YANG DIEDIT:

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"
imulsi
sumber
di phpinfo.php sudahkah Anda menambahkan beberapa header yang membuat file .php dapat dibaca?
@ Peteris tidak seluruh skrip saya ada dalam pertanyaan saya
imulsion
coba skrip sederhana: <?php echo "Hello world"; ?>apakah itu menampilkan Halo dunia? jika itu menampilkan kode maka @RabNawaz mengatakan server Anda tidak dikonfigurasi dengan benar!
Cukup
tunjukkan
1
dari mana Anda mengakses file php Anda? harap dicatat bahwa untuk menjalankan file php oleh server Anda, Anda perlu meletakkan file Anda di direktori root web yang tepat. dan mengaksesnya di browser web Anda sebagai http://localhost/atauhttp://127.0.0.1/
Ibrahim Azhar Armar

Jawaban:

90

Anda harus mengaktifkan php! Periksa folder mods-enableddi direktori Apache (default :) /etc/apache2/untuk melihat apakah Anda menemukan file bernama php. Saya tidak ingat ekstensi tetapi saya pikir itu .so.

Periksa juga /var/log/apache2/error.loguntuk melihat apakah Anda memiliki kesalahan lainnya.

Daniel Figueroa
sumber
8
sudahkah Anda menjalankan: a2enmod php5
Daniel Figueroa
6
tidak ada folder mods_enabled di direktori apache saya
imulsion
@imulsion dalam kasus saya itu mods-enabled di bawah / etc / apache2 /
Silveri
6
Dalam kasus saya untuk php7, saya harus melakukannya a2enmod php7.0dan itu memecahkan masalah saya. Butuh waktu seharian untuk mencapai postingan ini!
Rorschach
3
Tidak ada file yang bernama phpdalam mods-enabled, apa sekarang? Jawaban ini tidak menjelaskan banyak hal
Hitam
61

Wah, banyak solusi disini! Inilah yang saya lakukan di Ubuntu 16.04 :

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart
helmy
sumber
Bekerja untuk saya dengan menambahkan --reinstallke apt-get. Mungkin instalasi modul / apache php kotor.
Glastis
Ini bekerja untuk saya di server Ubuntu 16.04 Digital Ocean. Terima kasih
Sushant Bhargav
ini memberi saya kesalahan berikut: Considering conflict php5 for php7.0, Considering conflict mpm_worker for mpm_prefork, dll ... dan me-restart apache2 gagal
mrid
Jika Anda Considering conflict php5 for php7.2membuka /etc/apache2/mods-availabledan menghapusphp5.*
Simon Epskamp
39

Untuk PHP 7 (Mungkin berlaku untuk versi sebelumnya juga), tetapi saya harus melakukan ini:

Tambahkan ini ke bagian bawah /etc/apache2/apache2.conf

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

Jalankan ini dari terminal:

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

Maka jangan lupa untuk me-restart Apache sehingga tahu Anda mengubah beberapa hal:

sudo service apache2 restart

Ini adalah ringkasan dari: https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/

RyanNerd
sumber
3
Saya harus melakukan ini untuk PHP 5.6 di OSX El Capitan. (Menggunakan apache stok, tetapi homebrew php56)
rfay
1
Bekerja di Windows juga (artinya Anda tidak perlu menjalankan perintah terminal di Windows) Terima kasih telah menyelamatkan saya dari pencarian tanpa akhir.
che-azeh
ketika menginstal dari sumber, kecocokan file ini diperlukan. (config dan make etc. mengaktifkan modul di httpd.conf untuk saya, tetapi tidak menambahkan yang ini.)
user7296055
Ada satu miliar komentar dalam contoh file httpd.conf; adakah yang bisa menjelaskan mengapa tidak ada satu untuk php? Ini bukan hal yang jarang digunakan.
Danial
@Danial httpd.apache.org/support.html memiliki sejumlah metode di mana Anda dapat menemukan dokumen, melaporkan bug, dan mengajukan pertanyaan (seperti mengapa tidak ada contoh yang masuk akal dalam menggunakan PHP di httpd.conf?)
RyanNerd
24

buka file tersebut

/etc/apache2/httpd.conf

dan berubah

#LoadModule php5_module libexec/apache2/libphp5.so

ke

LoadModule php5_module libexec/apache2/libphp5.so

Jadi hapus saja modul PHP yang dimuat httpd.conf

inigo333
sumber
Dalam kasus saya, baris dimulai dengan php7_module - tetapi sebaliknya ini berhasil untuk saya!
b0rgBart3
6

Jawaban berbeda yang berhasil untuk saya. Apakah itu, untuk menginstal[sudo] apt-get install libapache2-mod-php5.X

Simon Mohoalali
sumber
1
Punyaku serupa. Saya melakukan "sudo apt-cache search ^ libapache2 | grep php" yang menemukan paket yang relevan dan kemudian menginstal "sudo apt-get install libapache2-mod-php". libapache2-mod-php7.0 telah diinstal.
VectorVortec
3

Baiklah jika Anda telah mencoba apa yang Anda telah diberitahu di atas atau sebelumnya (yang kemungkinan alasannya) dan masih menampilkan kode alih-alih mengeksekusinya maka ada satu hal yang Anda lakukan salah yang belum ditangani. Url yang Anda gunakan untuk mengakses kode php Anda; beberapa orang mencoba menjalankan kode php mereka hanya dengan menarik file .php ke dalam browser web. ini adalah praktik yang salah dan dapat menyebabkan masalah seperti ini. jika Anda telah menyimpan file sebagai "test.php" di folder C: // wamp / www maka Anda harus mengakses file ini dengan cara ini: localhost: //test.php. kesalahan semacam ini akan muncul ketika Anda mengaksesnya dengan cara ini: localhost: //wamp/www/test.php

Semoga saya membantu seseorang di luar sana. o / ~ Daniel

DAniel
sumber
3

Memposting apa yang berhasil untuk saya seandainya dalam membantu seseorang di masa mendatang, meskipun itu adalah kasus yang tidak biasa.

Saya telah menetapkan penangan untuk memaksa host web saya menggunakan versi php yang lebih tinggi daripada defaultnya. Ada 5,1, tapi saya ingin 5,6 jadi saya punya ini:

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

di file .htaccess saya.

Ketika mencoba menjalankan situs saya secara lokal, memilikinya di sana menyebabkan kode php dikeluarkan ke browser. Menghapusnya memecahkan masalah.

evanmcd
sumber
3

Apache menunjukkan kode php alih-alih menjalankan Masalah yang diperbaiki

1. Membuka php5.6 conf atau php7.x conf

# perintah berikut:

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

2. Mengomentari baris berikut

masukkan deskripsi gambar di sini

3. Restart server

$ sudo service apache2 restart

4 Nikmati :)

Matthew Farrell
sumber
2

Anda dapat menghapus file .htaceess Anda dan membiarkan sistem membuat yang baru (kosong atau dasar). Mungkin beberapa baris yang Anda tambahkan adalah pernyataan yang salah, atau ada hal lain di dalamnya yang menyebabkan masalah. Anda kemudian dapat menambahkan baris demi baris dari file .htaccess lama Anda untuk melihat apa yang menyebabkan masalah.

Itu berhasil untuk saya. Baris yang memberitahu mesin untuk tidak menampilkan ekstensi php adalah masalah dalam kasus saya ( RewriteCond dan RewriteRule ). File .htaccess lama saya berfungsi dengan baik di server bersama, tetapi masalah ini muncul ketika saya beralih ke VPS.

bokistack
sumber
Juga jika Anda mengalami kebodohan CORS: jalankan sudo a2enmod headersdan sudo a2enmod rewrite(jangan lupa untuk me-restart Apache).
RyanNerd
2

Terima kasih kepada orang lain di utas ini atas saran mereka. Mengikuti langkah-langkah yang disebutkan saya menemukan bahwa server apache tidak dapat mulai melaporkan kesalahan sintaks dalam loadfile di /etc/apache2/mods-enabled. Ternyata php7.0 dan php7.1 telah diaktifkan.

a2dismod php7.0
systemctl restart apache2

dan php ditampilkan dengan benar lagi.

djnz0feh.dll
sumber
1

jika modul userdir diaktifkan dan situs Anda ada di userdir (~ / public_html), Anda harus memeriksa /etc/apache2/mods-enabled/php5.conf. Bagian berikut membuatnya berfungsi (pada Ubuntu 14.10 utopic):

# 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>
pengguna906489
sumber
1

Jika Anda adalah pengguna ubuntu, setelah menginstal apache harus menjalankan perintah berikut dalam instalasi baru

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

Dalam kasus saya berfungsi dengan baik.

Hasan Baig
sumber
1

Apa yang berhasil untuk saya:

Di httpd.conf aktif, temukan

<IfModule mime_module>
...
</IfModule>

Itu melewatkan yang berikut ini

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

Setelah memulai ulang apache, file .php diurai dengan benar.

paul
sumber
1

tidak satu pun di atas yang diterapkan atau berfungsi untuk saya ... PHP7, Apache Httpd 2.2 di CentOS 6

Faktanya adalah, saya menginstal (semua dengan yum) php SEBELUM Apache ... Anda harus melakukan yang sebaliknya: selalu instal Apache terlebih dahulu, lalu PHP, dan kemudian berfungsi ... Memang, Anda mungkin hilang libphp7.sodanlibphp7-zts.so masuk/etc/httpd/modules/

Bagaimanapun, saya dapat memulihkan tanpa menghapus instalasi PHP. Saya menambahkan garis ajaib di /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php Dan kemudian jalankan:yum install php php-mysql

berhauz
sumber
1

Untuk PHP7 dan Apache2.4, ini yang perlu Anda lakukan:

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

Pergi ke bagian paling bawah dan masukkan yang berikut (dengan sendirinya):

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

Apache sekarang akan menjalankan semuanya dengan PHP. Jika yang Anda miliki hanyalah file html dan php, maka ini akan berfungsi dengan baik untuk Anda. Jika Anda memiliki jenis file lain, maka Anda harus menyesuaikan file tersebut dengan situasi Anda. Saya telah menguji ini dengan phpMyAdmin dan sepertinya tidak ada masalah .... sejauh ini.

Tak satu pun dari hal-hal lain yang dibicarakan orang-orang di sini yang perlu saya. Ketika saya meletakkan "AddType Application ....." di tempat yang benar, Apache baru saja memberi tahu saya bahwa modul itu telah dimuat dan dilewati.

Informasi lebih lanjut dapat ditemukan di sini: https://httpd.apache.org/docs/2.4/mod/core.html#filesmatch

Penginstalan saya dilakukan sebagai berikut:

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

Anda juga harus membaca ini, jika belum: https://httpd.apache.org/docs/current/howto/htaccess.html#when

Adam Winter
sumber
0

Ini juga terjadi pada saya saat menjalankan $ _POST di MAMP. Semua file .ini dan httpd saya sudah diatur dengan benar. Jika Anda melakukan penanganan formulir dan Anda memiliki dokumen html dan memposting info tersebut ke formhandler php yang menjalankan $ POST, pastikan Anda menjalankan file html dari localhost melalui server Anda, dan tidak hanya secara lokal.

Ini adalah jalan pintas yang saya lakukan untuk menjalankan dokumen html, dengan hanya mengklik file html di direktori saya dan meluncurkannya di browser web saya, padahal sebenarnya untuk memeriksa apakah php sedang diproses dalam formulir Anda, Anda harus menjalankan html Anda melalui server Anda. Protokol yang sangat sederhana yang saya abaikan.

Contoh:

Salah: file:///Applications/MAMP/htdocs/form/form.html

Baik: http://localhost:your port number/form/form.html

Sekarang php harus diproses setelah Anda mengklik tombol kirim Anda

maidenastraea
sumber
0

Saya mengalami masalah yang sama, disebabkan oleh konfigurasi default modul Debian / Ubuntu suphp. Itu berisi suPHP_Engine offseluruh / usr / share, yang menghasilkan sumber php yang ditampilkan di browser. Menonaktifkan dengan a2dismod suphpadalah solusi sementara.

Torsten Knodt
sumber
0

Saya memiliki masalah yang sama. Ketika saya menjalankan file php, browser web menunjukkan kepada saya kode php alih-alih mengeksekusinya. Saya telah mencoba berkali-kali: uninstall / instal ulang wampserver64, mengerjakan pengaturan / modul PHP / Apache, dll. Setelah 2 hari: Saya menyadari bahwa ketika saya mencoba menjalankan file php di dalam notepad ++ dengan menekan kombinasi default "ctrl + alt + shift + R "untuk chrome. Itu mencoba mengeksekusi file php saya seperti: "file /// C: / wamp64 / www / bla / bla .." di bilah alamat chrome saya. Itu masalah saya. Saya membuat perubahan sesuai dengan halaman Configuring Notepad ++ untuk menjalankan php di localhost? . Masalah saya terpecahkan. Tapi setelah 2 hari ..

montir
sumber
0

Jalankan Xampp (apache) sebagai administrator. Di tipe google chrome:

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

yaitu jika folder yang Anda buat adalah "LearnPhp", file adalah "chapter1.php" lalu ketik

localhost/LearnPhp/chapter1.php

Saya membuat folder ini di folder xampp di folder htdocs yang dibuat saat Anda mengunduh xampp.

Aquasar
sumber
0

Solusi Debian 9:

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

Tambahkan ke file baris berikutnya:

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

Lalu lari:

a2enconf php && service apache2 restart
mrDinkelman
sumber
Ini berhasil untuk saya, tetapi tidak pada awalnya. Saya menjalankan konten web di direktori pengguna, yang dinonaktifkan secara default. Untuk mengaktifkannya, lihat bagian terakhir di/etc/apache2/mods-available/php7.2.conf
Tony Adams
0

Beberapa kali jika Anda memiliki konflik versi php itu terjadi Untuk mengatasinya, ikuti langkah-langkah di bawah ini

Langkah 1: Daftar Yum diinstal | grep 'php'

jika Anda memiliki beberapa versi php seperti php 5.6 dan php 7.0 confilict ini akan terjadi

Langkah 2: yum hapus ** versi php Anda **

Langkah 3: Kemudian mulai ulang apapche /etc/init.d/httpd restartatauservice apache2 restart

sachin_ur
sumber
0

Solusi ini berhasil untuk saya. Saya membersihkan apache2 dan menginstal ulang. Itu terjadi setelah pembersihan dan pemasangan. Jika ini adalah pemasangan pertama, Anda tidak akan menghadapi masalah ini.

Kemal Atik
sumber
0

Saya mencoba beberapa solusi di atas namun perbaikan dalam skenario kami adalah menginstal modul fpm.

Kami telah menginstal httpd sebelum php yang mungkin ada hubungannya dengan masalah ini, tetapi untuk menyelesaikannya kami menginstal yang berikut ini:

yum module install php: 7.2

Ini menginstal modul php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpm yang kemudian kami aktifkan oleh:

systemctl aktifkan - sekarang php-fpm

Sejak saat itu kami membiarkan /etc/httpd/conf.d/php.conf sebagai default dan memulai ulang httpd

layanan httpd restart

Kemudian semuanya berhasil.

Semoga ini bisa membantu, butuh waktu lebih lama dari yang seharusnya.

Bren 1818
sumber
0

Tambahkan konfigurasi berikut ke /etc/apache2/apache2.conf

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

Dan mulai ulang apachemelaluisudo service apache2 restart

Imran Zahoor
sumber