สคริปต์ PHP ไม่ทำงานบนเซิร์ฟเวอร์ Apache


54

ฉันเพิ่งติดตั้ง Apache และ PHP5 ใหม่ แต่เมื่อฉันไปที่ root doc ของฉันมันเพิ่งดาวน์โหลดไฟล์ "ดาวน์โหลด" และเมื่อฉันลองdocumentroot /index.php มันแค่ดาวน์โหลดไฟล์ PHP

ฉันติดตั้ง PHP แล้วแต่ Apache ดูเหมือนจะไม่ต้องการใช้งาน
มีคนแนะนำให้เพิ่มบรรทัด 'โมดูลโหลด' ในของฉันhttpd.confแต่ฉันไม่มีไฟล์นั้น

คำตอบ:


103

พิมพ์ดีด:

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

จะติดตั้งทุกสิ่งที่คุณต้องการและจะเริ่มเซิร์ฟเวอร์ apache ด้วยการสนับสนุน PHP

ในการตรวจสอบว่าโหลดโมดูล php แล้วให้พิมพ์:

a2query -m php5

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

sudo a2enmod php5

และรีสตาร์ท apache:

sudo service apache2 restart

อัปเดตสำหรับ php7.x (ทดสอบบน Ubuntu 16.04, 16.10, 18.04, 18.10 )

ขอบคุณที่แสดงความคิดเห็นฉันปรับปรุงคำตอบสำหรับ php7.x

ติดตั้ง:

sudo apt-get install apache2 php7.x libapache2-mod-php7.x 

ตรวจสอบ:

a2query -m php7.x

โหลด:

sudo a2enmod php7.x

รีสตาร์ท apache:

sudo service apache2 restart

มันจะเป็นการดีกว่าถ้าจะใช้a2enmodการคัดลอกไฟล์ด้วยตนเองระหว่าง mods-available และ mods-enabled a2enmodสร้าง symlink ดังนั้นคุณจะมีเพียงหนึ่งสำเนาของการกำหนดค่า
jkt123

@ jkt123 คุณพูดถูก ขอบคุณสำหรับคำแนะนำฉันแก้ไขคำตอบของฉัน
girardengo

ในกรณีของฉันมันบอกว่า "ข้อผิดพลาด: โมดูล php5 ไม่มีอยู่!" มันถูกติดตั้ง
Marian Klühspies

3
สำหรับอูบุนตู 16.04 กับ php7 ผมได้ดำเนินการคำสั่งเหล่านี้ในการสั่งซื้อapt-get install libapache2-mod-php, a2query -m php7.0,service apache2 restart
Marlo

สำหรับ Ubuntu 14.04: # a2query -m php7.0 php7.0 (เปิดใช้งานโดยผู้ดูแลไซต์) รหัส PHP ยังไม่ทำงาน
Ashish Karpe

19

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

( เครดิต )


13

Ubuntu 16.04ได้ย้ายไปที่ PHP 7 คำสั่งเดียวนี้จะทำงานให้คุณ:

sudo apt-get install apache2 php libapache2-mod-php

นี่libapache2-mod-phpคือ meta-package ที่ติดตั้ง libapache2-mod-php7


2

เปิดphp.iniด้วยnanoในเทอร์มินัล:

sudo nano /etc/php/php5.6/apache2/php.ini

จากนั้นเปลี่ยน:

short_open_tag = Off

ไปยัง

short_open_tag = On

จากนั้นบันทึกแล้วรีสตาร์ท apache2:

sudo systemctl restart apache2

1
หรือแก้ไขสคริปต์ของ PHP :-)This directive determines whether or not PHP will recognize code between <? and ?> tags as PHP source which should be processed as such. It is generally recommended that <?php and ?> should be used and that this feature should be disabled [...]
นิโคลัสราอูล

1

ฉันพบปัญหาเดียวกัน แต่ปัญหาเฉพาะของฉันมีลักษณะเฉพาะ ฉันกำลังทำงานในไดเรกทอรีผู้ใช้ (โดยใช้ mod_userdir) - หมายถึงคุณเข้าถึงเว็บเพจของฉันด้วยhttp://host.name.com/~username/example.php

สิ่งนี้ถูกปิดใช้งานโดยค่าเริ่มต้นใน php * .conf ในไดเรกทอรีที่เปิดใช้งาน mods ของฉัน ฉันต้องแก้ไขเพื่อคอมเม้นต์:

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

นั่นเป็นความเจ็บปวดที่จะคิดออก ..

ฉันสงสัยว่าใครมีปัญหานี้ แต่ฉันคิดว่าฉันจะเพิ่มเพราะมันน่างงงวยกับฉันและคนอาจจะทำในสิ่งเดียวกัน ไม่มีใครใช้ ~ / ผู้ใช้อีกต่อไปฉันเดายกเว้นฉัน

คุณต้องรีสตาร์ท apache หลังจากจบหลักสูตรนี้

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