Apache กำลังดาวน์โหลดไฟล์ php แทนที่จะแสดง


93

ข้อมูลระบบปฏิบัติการและเซิร์ฟเวอร์:

  • CentOS 6.4 (รอบชิงชนะเลิศ)
  • Apache 2.2.15
  • PHP 5.5.1

ก่อนหน้านี้ฉันได้ติดตั้ง php 5.3.x แต่ตัดสินใจที่จะอัปเกรด ฉันถอนการติดตั้ง php 5.3.x ก่อนแล้วจึงติดตั้ง php 5.5.1 แต่หลังจากการติดตั้งเสร็จสิ้น apache ไม่ได้แยกวิเคราะห์ไฟล์ php มันเพิ่งดาวน์โหลดมา ฉันได้ตรวจสอบคำถามที่คล้ายกันที่นี่ใน stackoverflow แต่ไม่มีคำถามใดที่ช่วยฉันได้เลย

สำหรับบันทึกฉันมีบรรทัดต่อไปนี้ใน httpd.conf และ php.conf ของฉันที่ควรทำให้ php ทำงานได้ แต่อย่า:

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php

ฉันจะขอบคุณทุกความช่วยเหลือ ขอบคุณ.

แก้ไข:

ฉันมีบรรทัดเหล่านี้ใน php.conf

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

แก้ไข:

โดยการลบ

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

apache ไม่ดาวน์โหลดไฟล์อีกต่อไป ตอนนี้ apache กำลังแสดงซอร์สโค้ด แต่ไม่ใช่ทั้งหมดเป็นเพียงส่วนหนึ่ง ฉันเพิ่ม

AddType text/html .php

แต่ไม่มีโชค


ดีว่าคุณไม่ได้ติดตั้งหรือไม่ SAPI ใด ดูเพิ่มเติมวิธีตรวจสอบว่าโมดูล apache ใดเปิดใช้งาน / ติดตั้ง?
มาริโอ

2
โมดูล php ของคุณไม่ทำงาน
Sithu

1
ตรวจสอบhttpd.confว่าโมดูล php แสดงความคิดเห็นหรือไม่
MaveRick

1
ฉันแก้ไขคำถามแล้ว โมดูลจะออกและเห็นได้ชัดว่ากำลังโหลด
Anthony Gainor

คุณรีสตาร์ท apache หลังการติดตั้งหรือไม่?
Ahmad

คำตอบ:


80

AddType ที่ถูกต้องสำหรับ php คือ application / x-httpd-php

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

ตรวจสอบให้แน่ใจว่าโมดูล php ของคุณโหลดแล้ว

LoadModule php5_module        modules/mod_php55.so

เมื่อคุณกำหนดค่า apache ให้ลองดูหน้าเว็บจากเบราว์เซอร์อื่น - ฉันมีเวลาหลายวันที่ Chrome จะแคชผลลัพธ์อย่างดื้อรั้นและดาวน์โหลดซอร์สโค้ดต่อไปในขณะที่อยู่ในเบราว์เซอร์อื่นก็ใช้ได้ดี


ไม่มีเส้นทางโมดูลในกรณีของฉัน
shamaseen

2
คุณช่วยเพิ่มข้อมูลที่จะวางบรรทัดเหล่านี้ได้ไหม
Sören

7
สำหรับคนที่กำลังมองหาตำแหน่งที่จะวางสายเหล่านี้ /etc/httpd/conf/httpd.conf
Siraj Alam

ในกรณีของฉันบน Apache-2.4.6 + PHP-7.3.13> LoadModule php7_module modules / libphp7.so
shaojun lyu

23

วันนี้ฉันเจอปัญหานี้และไม่มีวิธีแก้ปัญหาใดที่อธิบายได้ผลสำหรับฉัน ดังนั้นนี่เป็นอีกสาเหตุที่เป็นไปได้:

หากคุณมีสิ่งที่ต้องการ

AddHandler x-mapp-php6 .php3 .php4 .php .phtml

ใน.htaccessไฟล์ของโฟลเดอร์เนื้อหาเว็บของคุณอาจทำให้สคริปต์ PHP ของคุณหยุดทำงาน ในกรณีของฉันเซิร์ฟเวอร์ไม่ทราบx-mapp-php6ประเภทเนื่องจาก.htaccessไฟล์นั้นเป็นสิ่งที่ฉันนำเข้าจากโฮสต์เว็บอื่นเมื่อฉันโอนเนื้อหาเว็บไซต์

แค่ลบAddHandlerบรรทัดออกจาก.htaccessไฟล์ก็แก้ปัญหาให้ฉันได้


สมบูรณ์แบบ. ในกรณีของฉันมันเป็นAddHandler application/x-httpd-php54 .php54 .phpสิ่งที่ต้องถูกลบออก
Old McStopher

ฉันมีปัญหาบางอย่าง แต่พบไฟล์. htaccess ผู้ร้ายในโฮมไดเร็กทอรี (หนึ่งไดเร็กทอรีเหนือเว็บไดเร็กทอรี "public_html") หากใครก็ตามที่มีปัญหาเดียวกันให้มองหา. htaccess ในไดเรกทอรีหลักด้วย (น้ำตกการตั้งค่า)
Wireblue

ฉันมีไฟล์. htaccess แบบนี้ที่ดึงมาจากเว็บโฮสติ้งเซิร์ฟเวอร์ กำลังบังคับให้ใช้ PHP เวอร์ชันที่ไม่ได้ติดตั้งในเครื่องของฉัน ดังนั้นโฮสต์เสมือนจึงไม่เรียกใช้ไฟล์ PHP อย่างถูกต้อง
BrightIntelDusk

นี่เป็นปัญหาเกือบแน่นอนหากบางไซต์ใช้งานได้และเว็บไซต์อื่น ๆ ไม่ทำงาน Joomla .htaccess มี AddHandler แต่ WordPress ไม่มี
Peter Wooster

สิ่งนี้ใช้ได้ผลสำหรับฉันเพิ่งลบบรรทัดนั้นออกจากไฟล์สาธารณะ /. htaccess ของฉันและดัชนีถูกโหลด
PA-GW

16

หลังจากดิ้นรนมากในที่สุดฉันก็แก้ปัญหาได้

หากคุณได้รับแจ้งให้ดาวน์โหลด.phpไฟล์แทนที่จะเรียกใช้งานนี่เป็นวิธีแก้ปัญหาที่สมบูรณ์แบบ: ฉันคิดว่าคุณได้ติดตั้ง PHP5 แล้วและยังคงได้รับข้อผิดพลาดนี้

$ sudo su
$ a2enmod php5

นี่ไง.

แต่หากคุณยังคงได้รับข้อผิดพลาด:

Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it

จากนั้นทำสิ่งต่อไปนี้:

ปรากฎว่าไฟล์ไม่ควรเก็บไว้ในmods-enabledแต่ควรเก็บไว้ในmods-availableไฟล์. จากนั้นควรสร้าง symlink ใน mods ที่เปิดใช้งานโดยชี้ไปที่ไฟล์ที่เก็บไว้ใน mods-available

ก่อนอื่นให้ลบต้นฉบับ:

$ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/

จากนั้นสร้างลิงก์สัญลักษณ์:

$ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf

ฉันหวังว่าปัญหาของคุณจะได้รับการแก้ไข


2
โปรดทราบว่าสิ่งนี้ใช้ได้เฉพาะกับ Linux (และเฉพาะ Debian Linux)
Gwyneth Llewelyn

6

โปรดดูคำสั่ง addtype ของคุณ

สำหรับฉันดูเหมือนว่า Apache กำลังบอกเบราว์เซอร์ว่ากำลังส่งประเภทเอกสารของแอปพลิเคชัน / php สำหรับสคริปต์ที่มีนามสกุลเช่น. php5 ในความเป็นจริง Apache ควรจะบอกเบราว์เซอร์ว่าสคริปต์กำลังส่งออกข้อความ / html

โปรดลองสิ่งนี้:

AddType text/html .php

เกี่ยวกับข้อเสนอแนะข้างต้นที่คุณควรบอกเบราว์เซอร์ว่าคุณกำลังส่งออกสคริปต์ PHP: ดูเหมือนเป็นความคิดที่ผิดปกติสำหรับฉัน ฉันเริ่มใช้งานและพบว่ามีการอภิปรายเกี่ยวกับเรื่องนี้ในเว็บไม่น้อย เห็นได้ชัดว่ามีบางกรณีที่คุณอาจต้องการบอกว่าคุณกำลังส่งสคริปต์ PHP (แม้ว่า Apache จะเรียกใช้สคริปต์และปล่อยข้อความ / html ก็ตาม) และยังมีบางกรณีที่เบราว์เซอร์ไม่รู้จัก Mime นั้น ประเภท.

การล้างแคชของเบราว์เซอร์เป็นความคิดที่ดีเสมอ

ในกรณีที่เป็นประโยชน์นี่คือสำเนาของไฟล์ /etc/httpd/conf.d/php.conf ของฉันจากเซิร์ฟเวอร์ที่ใช้ CentOS 5.9:

#        
# PHP is an HTML-embedded scripting language which attempts to make it                                             
# easy for developers to write dynamically generated webpages.                                                  
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps

สิ่งนี้น่าสนใจ แต่ในกรณีของฉันมันเพียงแค่ส่งออกสคริปต์ PHP ทั้งหมดคราวนี้ถูกจัดรูปแบบเป็น HTML (ตรงข้ามกับการจัดรูปแบบด้วย ASCII เท่านั้น) - ไม่มีประโยชน์! ปัญหาคือ PHP ทำงานไม่ถูกต้องหรือส่งส่วนหัวผิด ...
Gwyneth Llewelyn

โปรดสังเกตคำสั่ง AddType สุดท้าย (ซึ่งแสดงความคิดเห็นในตัวอย่างด้านบน) ทำให้ไฟล์. phps พิมพ์ออกมาได้สวยในรูปแบบ HTML เป็นไปได้ไหมว่าการกำหนดค่า Apache ของคุณเป็นไฟล์. php ที่ค่อนข้างพิมพ์ได้
Sam Azer

5

สิ่งนี้อาจเกิดขึ้นเนื่องจากโมดูลที่ขาดหายไปที่จำเป็นสำหรับ php ของคุณ สมมติว่าคุณติดตั้ง php7 แล้วให้ค้นหาโมดูล php7 ที่มีโดยใช้

sudo apt-cache search php7-*

คำสั่งด้านบนจะแสดงรายการโมดูล PHP7 ที่มีทั้งหมดสำหรับการติดตั้ง คุณสามารถเริ่มการติดตั้งโมดูลเช่น

sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json

4

หาก. htaccess ของคุณมีอะไรเช่นนี้ ... แอปพลิเคชัน AddHandler / x-httpd-php53 .php .php5 .php4 .php3 จากนั้นแสดงความคิดเห็นและลองรีเฟรชอีกครั้งสิ่งนี้ได้ผลสำหรับฉัน ...


3

ผมมีปัญหาเดียวกัน. Apache ไม่โหลดไฟล์ php จากบางเว็บไซต์เพียงแค่ดาวน์โหลด ฉันอ่านโพสต์นี้และคำตอบและฉันเห็นว่าฉันมีบรรทัดนี้อยู่ในตำแหน่งสุดท้ายของไฟล์. htaccess:

AddHandler x-mapp-php5.5  .php

ฉันได้แสดงความคิดเห็นและทุกอย่างทำงานได้ดี

ขอบคุณทุกคน !!!


2

ก่อนหน้านี้ฉันมีปัญหาที่คล้ายกันหลังจากอัปเกรดจาก 5.3 เป็น 5.4 แต่การตั้งค่าของฉันดูแตกต่างไปเล็กน้อยเนื่องจากฉันใช้ Debian และใช้ fcgid เพื่อเซิร์ฟเวอร์หน้า PHP ไม่ใช่โมดูล PHP5 apache / cgi ดังนั้นหลังจากที่ฉันอัปเกรดแล้วมันก็ติดตั้ง php5_cgi ซึ่งชนกับการตั้งค่า fcgid ของฉันและจะไม่เรียกใช้ไฟล์ PHP อีกต่อไป

ฉันต้องปิดใช้งานโมดูล Apache และรีสตาร์ท Apache

a2dismod php5_cgi
/etc/init.d/apache2 restart

เมื่อโมดูล php5_cgi ไม่สามารถใช้งานได้ fcgid ก็สามารถให้บริการหน้า PHP ได้อีกครั้ง


ใช่ไอ้ cgi ที่ยุ่งยากนี้ ^^ แก้ไขปัญหาของฉันหลังจากอัปเดต php จาก 5.3 เป็น 5.4 จาก dotdeb
Emii Khaos

2

ฉันมีอาการคล้ายกัน แต่วิธีแก้ปัญหาอื่น: ใน /etc/apache2/mods-enabled/php5.conf มีคำแนะนำที่เป็นประโยชน์ในความคิดเห็นซึ่งฉันทำตาม:

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

2

ในกรณีที่มีคนใช้ php7 ภายใต้ระบบ Linux

ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งาน php7

sudo a2enmod php7

เริ่มบริการ mysql และ Apache ใหม่

sudo systemctl restart mysql
sudo systemctl restart apache2

2

หลังจากอัปเดต PHP เป็น 7.3 แล้วสคริปต์ PHP จะทำงานด้วยwww-dataแทนที่จะเป็น$ USERเหมือนเมื่อก่อน

ฉันต้องการติดตั้งและเปิดใช้งาน PHP-FPM ใหม่:

sudo apt-get install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo service apache2 restart
sudo a2enconf php7.3-fpm
sudo service apache2 restart

เพื่อให้แน่ใจว่าทุกอย่างโอเคสำหรับVirtualminผมใช้Re-ตรวจสอบการกำหนดค่าตัวช่วยสร้าง/virtual-server/check.cgiภายใต้Vitualmin / การตั้งค่าระบบ

หลังจากนั้น Apache / PHP ก็ดาวน์โหลดไฟล์ php แทนที่จะเรียกใช้ ดังนั้นฉันต้องแก้ไข/etc/apache2/mods-available/php7.3.confเพื่อแสดงความคิดเห็นในแถวSetHandler application/x-httpd-phpด้านล่าง:

<FilesMatch ".+\.ph(ar|p|tml)$">
#    SetHandler application/x-httpd-php
</FilesMatch>

หลังจากรีสตาร์ท Apache มันช่วยแก้ปัญหาของฉันได้หวังว่าจะช่วยได้

ดูแลแคชของเบราว์เซอร์ด้วย

ระบบของฉัน:

Ubuntu          16.04.6 LTS
Webmin version      1.932
Usermin version     1.780
Virtualmin version  6.08
Apache version      2.4.41
PHP versions        7.3.12
PHP-FPM         7.3.12 Server

1

ฉันใช้เวลาสองวันในการติดตามสิ่งนี้และพบว่าฉันใส่สคริปต์ PHP ของฉันในไดเรกทอรีที่ไม่ถูกต้อง

/var/wwwในการติดตั้งอูบุนตูของฉันมาตรฐานฉันถูกวางสคริปต์ใน พวกเขาควรจะเข้ามา/var/www/htmlมา

ฉันเพิ่งเริ่มงาน PHP ดังนั้นฉันจึงไม่รู้ว่าวิธีแก้ปัญหาของฉันเกี่ยวข้องกับการเปลี่ยนแปลงเวอร์ชันที่คุณทำหรือไม่


1

สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ (ฉันติดตั้ง php7 แล้ว):

sudo apt-get ติดตั้ง libapache2-mod-php7.0

sudo service apache2 รีสตาร์ท


1

ฉันมีปัญหานี้ ปรากฎว่าฉันติดตั้งทั้ง nginx และ apache และเริ่มการบู๊ตโดยอัตโนมัติ ปัญหาคือ nginx เชื่อมโยงกับพอร์ต http ก่อนซึ่งป้องกันไม่ให้ apache เริ่มทำงาน


1

อาจเป็นไปได้ว่าคุณใช้ nginx อยู่ แต่ php ของคุณถูกตั้งค่าให้ทำงานด้วย apache ในการตรวจสอบให้เรียกใช้service nginx statusและservice apache2 statusดูว่ากำลังทำงานอยู่ ในกรณีที่ nginx กำลังทำงานและ apache ไม่อยู่ให้เรียกใช้sudo service nginx stop; sudo service apache2 startและเซิร์ฟเวอร์ของคุณจะให้บริการไฟล์ php ตามที่คาดไว้


1

โอเค ... ฉันรู้ว่าคำถามนี้มีคำตอบอยู่แล้วกว่า 1,000,000 คำ - แต่ฉันใช้เวลาอย่างน้อย 6 ชั่วโมงเพื่อหาคำตอบนี้ และฉัน googled มันหลายร้อยครั้งและไม่พบโพสต์เกี่ยวกับเรื่องนี้เลยแม้แต่โพสต์เดียว ผมจึงคิดว่าจะเพิ่มวิธีแก้ปัญหาตรงนี้

ข้อสรุป

หากฉันแสดงความคิดเห็นสองบรรทัดนี้ใน. conf-files ของฉันใน/etc/apache2/[[SERVER-NAME].conf-file:

php_admin_value engine Off
IPCComTimeout 31

ฉันมีความคิดสิ่งที่พวกเขาทำอะไรไม่ได้หรือว่าพวกเขาได้มี - แต่มันก็เป็นหนึ่งในของฉันทุก.conf-Files และถ้าฉันลบบรรทัดเหล่านั้นและตรวจสอบให้แน่ใจว่ามีลิงก์สัญลักษณ์ใน/etc/apache2/sites-enabled/ -folder แสดงว่ามันไม่ดาวน์โหลด index.php - และทุกอย่างทำงานได้ตามที่ควร

เรื่องราวทั้งหมด

ฉันติดตั้ง VirtualMin บน Ubuntu 16.04 VPS แล้ว ฉันอัปเกรดเป็น PHP เวอร์ชัน 7.2 ไม่นานหลังจากนั้นฉันอัปเดตเวอร์ชัน Ubuntu และเกิดข้อผิดพลาด 'Kernel Offset: Disabled' ดังนั้นฉันต้องไปลบ Ubuntu เวอร์ชันล่าสุด - และเมื่อระบบปฏิบัติการของฉันบูทขึ้นอีกครั้ง: BOOM! ฉันได้รับข้อผิดพลาดที่โพสต์ของเขาพูดถึง: สำหรับทุกไซต์บน VPS ของฉันเพียงดาวน์โหลด index.php แทนที่จะแสดง

ฉันลองทำทุกอย่าง:

  • ลบ PHP7.2 และติดตั้ง PHP5.6 แล้ว (ตอนนี้ฉันรู้แล้วว่าเวอร์ชัน PHP ไม่มีส่วนเกี่ยวข้องใด ๆ นั่นคือการกำหนดค่า apache ที่ต้องใช้งานได้)
  • พยายามเปิดใช้งานและปิดใช้งานโมดูล apache ในการติดตั้งที่มีอยู่ แต่ไม่มีโชค
  • จากนั้นฉันก็ลบ apache ออกอย่างสมบูรณ์และติดตั้งอีกครั้งโดยที่ปัญหายังคงอยู่ที่นั่น!
  • พยายามเล่นกับการตั้งค่าเซิร์ฟเวอร์ Virutal ใน VirtualMin (Webmin >> Servers >> Apache Webserver)
  • ตรวจสอบการกำหนดค่าบน Virtual-server เครื่องเดียว (Virtualmin >> System Settings >> Re-Check Configuration) ... ขั้นตอนนี้ค่อนข้างดีเนื่องจากบอกว่าโมดูลใดใน Apache หายไป โดยที่ฉันสามารถเปิดใช้งานได้ด้วยa2enmod [MODULE_NAME] . และฉันพบชื่อโมดูลโดย Googling around ฉันต้องใช้งานประมาณ 6-8 โมดูลก่อนที่ฉันจะผ่านขั้นตอนนั้นในการตรวจสอบความถูกต้องและใช้เวลาสองสามนาทีก่อนที่แคชจะหมด - ดังนั้นการทำเช่นนี้จึงเป็นขั้นตอนที่น่าเบื่อ
  • และในที่สุดฉันก็หาข้อสรุปที่เขียนไว้ข้างบนพร้อมกับซิมลิงค์ - แล้วฉันก็ใช้งานได้ ฉันต้องผ่านมันสำหรับทุกไซต์บน VPS ของฉันแม้ว่า

1

ฉันมีปัญหานี้และถ้าคุณไม่เคยเล่นกับการตั้งค่าการกำหนดค่าเซิร์ฟเวอร์ของคุณปัญหาของคุณคือ 90% ในไฟล์. htaccessของคุณ

คุณแก้ไขไฟล์. htaccess ในท้องถิ่นหรือลบออก (LOCALLY)


0

ฉันมีปัญหาคล้ายกับ OP เมื่ออัปเกรด php5 จากเวอร์ชันเก่ากว่าเป็น 5.5.9 ซึ่งเป็นเวอร์ชันที่ติดตั้งกับ Mint 17

ฉันกำลังใช้งานการตั้งค่า LAMP บนเครื่องบนเครือข่ายท้องถิ่นของฉันซึ่งฉันใช้เพื่อดูตัวอย่างการเปลี่ยนแปลงในเว็บไซต์ก่อนที่ฉันจะอัปโหลดการเปลี่ยนแปลงเหล่านั้นไปยังเซิร์ฟเวอร์จริง ดังนั้นฉันจึงรักษากระจกท้องถิ่นที่สมบูรณ์แบบของไซต์จริง

หลังจากการอัพเกรดไฟล์ที่รันและแสดงอย่างสมบูรณ์บนไซต์จริงจะไม่แสดงหรือจะแสดงเฉพาะ html บนเครื่องภายในเท่านั้น PHP ไม่ได้รับการแยกวิเคราะห์ คำสั่ง phpinfo () ใช้งานได้ดังนั้นฉันจึงรู้ว่า php ใช้งานได้ บันทึกไม่สร้างข้อผิดพลาด การดูแหล่งที่มาของหน้าทำให้ฉันเห็นรหัส php จริง

ฉันได้สร้างเพจ test.php ที่มีรหัสต่อไปนี้:

<?php phpinfo(); ?>

สิ่งนี้ได้ผล จากนั้นผมค้นพบเมื่อฉันเปลี่ยน<?phpไป<?คำสั่งไม่ทำงาน ไซต์ php ทั้งหมดของฉันใช้<?แทน<?phpซึ่งอาจไม่เหมาะ แต่เป็นความจริง ฉันแก้ไขปัญหาโดยไปที่ / etc / php5 / apache2 ค้นหา "short_open_tag" และเปลี่ยนค่าจากปิดเป็นเปิด


0

หากวิธีการข้างต้นไม่ได้ผล

ลองแสดงความคิดเห็นในบรรทัด

SetHandler ....

และรีสตาร์ท apache โดยใช้ไฟล์

/etc/init.d/httpd restart

มันน่าทำงาน!



0

ฉันมีปัญหาแบบนี้ นี่คือวิธีแก้ปัญหา หลังจากติดตั้งApacheแล้วฉันก็ติดตั้งPHPโดยใช้คำสั่งนี้

sudo apt-get install php libapache2-mod-php

มันดำเนินการอย่างถูกต้อง แต่ฉันขอไฟล์. phpจาก Apache มันให้โดยไม่ต้องเรียกใช้PHPสคริปต์

จากนั้นตรวจสอบว่าเปิดใช้งาน PHP แล้ว

$ cd /etc/apache2
$ ls -l mods-*/*php*

แต่มันไม่แสดงผลลัพธ์ใด ๆ ฉันตรวจสอบแพ็คเกจ PHP ที่ติดตั้ง

$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

ชนิดที่แตกต่างกันของPHPรุ่นที่ติดตั้งในคอมพิวเตอร์ของฉัน แล้วฉันจะลบบางPHPแพคเกจจากรายการก่อนหน้าของฉันโดยใช้apt-get ล้าง

sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json

ฉันติดตั้งPHPใหม่

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

ตรวจสอบว่าโหลดโมดูล PHP แล้ว

$ a2query -m php7.0

หากไม่ได้เปิดใช้งานด้วย:

$ sudo a2enmod php7.0

รีสตาร์ทเซิร์ฟเวอร์Apache

$ sudo systemctl restart apache2

สุดท้ายฉันตรวจสอบกระบวนการPHPบนApache

สร้างไฟล์เปล่า

sudo vim /var/www/html/info.php

เพิ่มเนื้อหานี้ใน info.php & save

<?php
  phpinfo();
?>

ตรวจสอบเบราว์เซอร์:

http: //localhost/info.php

มันแสดงได้อย่างถูกต้องฉันคิดว่าสิ่งนี้จะช่วยใครก็ได้


0

หากคุณมี virtualmin ให้ลองแสดงความคิดเห็นเกี่ยวกับบรรทัดเหล่านี้ในการกำหนดค่า apache ของคุณใน / etc / apache2 / sites-available

  #RemoveHandler .php
  #RemoveHandler .php7.0
  #php_admin_value engine Off

0

สำหรับผู้ที่พบโพสต์นี้จาก Google เกือบ 6 ปีในอนาคต (และต่อไป!) คุณอาจพบปัญหานี้กับ Apache 2 และ PHP 7 ในขณะที่ใช้ UserDirโมดูลนี้ด้วย

สาเหตุที่เป็นไปได้อีกประการหนึ่งของปัญหานี้อาจเกิดจากคุณกำลังพยายามเรียกใช้สคริปต์ใน "ไดเรกทอรีผู้ใช้" จากUserDirโมดูล การเรียกใช้สคริปต์ PHP ในไดเรกทอรีผู้ใช้จะถูกปิดใช้งานโดยค่าเริ่มต้น คุณจะพบปัญหานี้หากสคริปต์อยู่ในpublic_htmlไดเร็กทอรีในโฮมโฟลเดอร์ของคุณและคุณกำลังพยายามเข้าถึงจากhttp://localhost/~your_usernameไดเรกทอรีในโฟลเดอร์ที่บ้านของคุณและคุณกำลังพยายามที่จะเข้าถึงได้จาก

/etc/apache2/mods-enabled/php7.2.confเพื่อแก้ไขปัญหานี้เปิดขึ้น คุณต้องแสดงความคิดเห็นหรือลบแท็กบล็อกที่ด้านล่างสุดที่อ่าน

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

0

ฉันมีปัญหาเดียวกันหลังจากใช้zypper rm php*เพื่อถอนการติดตั้ง PHP และติดตั้งอีกครั้งด้วยzypper in php7 php7-gd php7-gettext php7-mbstring php7-mysql php7-pear

ฉันแก้ไขได้โดยเปิดใช้งานโมดูล apache2 และรีสตาร์ทเว็บเซิร์ฟเวอร์:

a2enmod php7 && service apache2 restart

0

เมื่อฉันอัปเกรดจาก PHP 7.2 เป็น PHP 7.4 ฉันก็พบปัญหาเดียวกัน ทำงานโดยทำดังนี้: -

  1. ใน[domain].conf fileความคิดเห็นดังต่อไปนี้:

    php_admin_value engine Off
    

    และเพิ่ม:

    AddType  application/x-httpd-php-source  .phps
    AddType text/html .php
    
  2. ปิดการใช้งาน mod 7.2 และเปิดใช้ 7.4 โดยทำตาม:

    a2dismod php7.2
    a2enmod php7.4
    
  3. ใน/etc/apache2/mods-enabled/php7.4.confไฟล์แสดงความคิดเห็นต่อไปนี้:

    SetHandler application/x-httpd-php
    php_admin_flag engine Off
    

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.