ไม่มีการใช้งานโค้ด PHP แต่จะแสดงโค้ดในหน้านั้นแทน


320

ฉันพยายามรันโค้ด PHP บางตัวในโปรเจ็กต์ (โดยใช้ Dreamweaver) แต่โค้ดไม่ได้ถูกเรียกใช้

เมื่อฉันตรวจสอบซอร์สโค้ดโค้ด PHP จะปรากฏเป็นแท็ก HTML (ฉันเห็นได้ในซอร์สโค้ด) Apache ทำงานอย่างถูกต้อง (ฉันทำงานกับ XAMPP) หน้า PHP กำลังเปิดอย่างถูกต้อง แต่โค้ด PHP ไม่ได้รับการดำเนินการ

ใครบางคนมีข้อเสนอแนะเกี่ยวกับสิ่งที่เกิดขึ้น?

หมายเหตุ:ไฟล์นี้มีชื่อว่าแล้วfilename.php

แก้ไข: รหัส .. :

<?
include_once("/code/configs.php");
?>

การพิมพ์


44
คุณใช้แท็กสั้น ๆ<?แทน<?phpหรือไม่
Dan Grossman

28
อย่าใช้แท็กสั้น ๆ ( <?) พวกเขาถูกคัดค้านไม่ทำงานในหลาย ๆ ที่และไม่จำเป็นอย่างสมบูรณ์ การบันทึกการกดแป้นสามครั้งไม่ใช่เหตุผลที่ถูกต้องเพื่อให้รหัสของคุณอาจล้มเหลวบนเซิร์ฟเวอร์ครึ่งหนึ่งที่อาจทำงานได้
mopsyd

10
@mopsyd มันบอกว่าแท็กสั้น ๆ เลิกใช้ที่ไหน? โปรดทราบว่าแท็กสั้นไม่เหมือนกับแท็ก echo สั้นและแท็ก echo สั้นได้รับการสนับสนุนโดยค่าเริ่มต้นตั้งแต่ PHP 5.4 โดยไม่คำนึงถึงการshort_open_tagตั้งค่า
Kyle Anderson

5
ฉันรู้ว่าแท็กสั้นไม่ใช่แท็ก echo สั้น ๆ ซึ่งเป็นสาเหตุที่ฉันระบุซึ่งฉันพูดถึงในความคิดเห็น ในช่วงเวลาของการเขียนแท็กสั้น ๆ ถูกตั้งค่าสถานะเพื่อคัดค้านการปล่อย php 6 แม้ว่าจะมีการเปลี่ยนแปลงตั้งแต่ ปัญหายังคงมีอยู่ที่เซิร์ฟเวอร์จำนวนมากปิดใช้งานซึ่งทำให้รหัสของคุณพกพาได้น้อยลงอย่างมาก สิ่งนี้ใช้ไม่ได้กับแท็ก echo สั้น ๆ ( <?=) ซึ่งควรทำงานได้ดีบน php 5.4+ โดยไม่คำนึงถึงการตั้งค่าเซิร์ฟเวอร์
mopsyd

3
พูดคุยโง่เกี่ยวกับแท็กสั้น ๆ แท็กยาวดูดและพวกมันน่าเกลียด ฉันไม่เคยมีปัญหาในการเขียนโปรแกรม php เป็นเวลา 10 ปี พวกเขาแทบไม่เคยมีปัญหาเลย
Danial

คำตอบ:


418

ดูเหมือนว่ามีบางอย่างผิดปกติกับการกำหนดค่าของคุณนี่คือบางสิ่งที่คุณสามารถตรวจสอบได้:

  1. ตรวจสอบให้แน่ใจว่าติดตั้งและใช้งาน PHP อย่างถูกต้อง นี่อาจฟังดูงี่เง่า แต่คุณไม่มีทางรู้ วิธีง่าย ๆ ในการตรวจสอบคือเรียกใช้php -vจากบรรทัดคำสั่งและดูว่าส่งคืนข้อมูลรุ่นหรือข้อผิดพลาดใด ๆ

  2. ตรวจสอบให้แน่ใจว่าโมดูล PHP นั้นอยู่ในรายการและไม่แสดงข้อคิดเห็นใน httpd.conf ของ Apache ของคุณนี่ควรเป็นสิ่งที่คล้ายLoadModule php5_module "c:/php/php5apache2_2.dll"ในไฟล์ ค้นหาLoadModule phpและตรวจสอบให้แน่ใจว่าไม่มีความคิดเห็น ( ;) อยู่ข้างหน้า

  3. ตรวจสอบให้แน่ใจว่าไฟล์ httpd.conf ของ Apache มีประเภท PHP MIME อยู่ AddType application/x-httpd-php .phpนี้ควรจะเป็นสิ่งที่ชอบ สิ่งนี้บอกให้ Apache เรียกใช้.phpไฟล์เป็น PHP ค้นหา AddType แล้วให้แน่ใจว่ามีรายการสำหรับ PHP, และว่ามันเป็น uncommented

  4. ตรวจสอบให้แน่ใจว่าไฟล์ของคุณมี.phpนามสกุลอยู่ในนั้นหรือส่วนขยายใดที่ระบุไว้ในคำนิยาม MIME ในจุด # 3 มิฉะนั้นจะไม่ถูกเรียกใช้เป็น PHP

  5. ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้แท็กสั้น ๆในไฟล์ PHP ( <?) สิ่งเหล่านี้จะ ไม่เปิดใช้งานบนเซิร์ฟเวอร์ทั้งหมดโดยค่าเริ่มต้นและการใช้งานของพวกเขาจะหมดกำลังใจ ใช้<?phpแทน (หรือเปิดใช้งานแท็กสั้น ๆ ใน php.iniด้วยshort_open_tag=Onหากคุณมีรหัสที่ต้องใช้)

  6. ตรวจสอบให้แน่ใจว่าคุณกำลังเข้าถึงไฟล์ผ่านเว็บเซิร์ฟเวอร์โดยใช้ URL อย่างที่http://localhost/file.phpไม่ผ่านการเข้าถึงไฟล์ในเครื่องfile://localhost/www/file.php

และสุดท้ายตรวจสอบคู่มือ PHP สำหรับเคล็ดลับการติดตั้งต่อไป


14
ไม่ทราบว่าทำไม แต่ติดตั้ง PHP 5.3.15 AddType application/x-httpd-php .phpไม่ได้เพิ่มบรรทัด ขอบคุณมาก!!
MatuDuke

7
@shmeeps: คุณเห็นที่ไหนว่าแท็กสั้น ๆ เลิกใช้แล้ว ฉันได้ทำการค้นหาแล้วและสามารถค้นหาคำแนะนำกับพวกเขาได้เท่านั้นไม่เกี่ยวกับการคัดค้าน ได้รับสิทธิ์สำหรับแอปพลิเคชั่นที่จะแจกจ่ายจะดีกว่าถ้าใช้ <? php ในกรณีที่เซิร์ฟเวอร์การโฮสต์ไม่ได้เปิดใช้งาน แต่สำหรับแอปที่คุณสามารถควบคุมเซิร์ฟเวอร์ได้อย่างสมบูรณ์ เห็นเหตุผลที่จะไม่ใช้พวกเขา
ClarkeyBoy

3
จุดที่ 6 ใช้งานไม่ได้สำหรับฉัน .. การเข้าถึงในพื้นที่ไม่ได้ใช้เซิร์ฟเวอร์ apache
KawaiKx

6
จุดที่ 2 ทำงานให้ฉันอย่างปลอดภัยapt-get purge apache2; apt-get install apache2 libapache-mod-php5
ulkas

1
@full_prog_full ลองอัปโหลดไฟล์ที่มี.phpส่วนขยายพร้อมเนื้อหา<?php echo("Success"); ?>และดูว่าการเข้าถึงไฟล์ผ่านเว็บเบราว์เซอร์ส่งผลให้ "สำเร็จ" หรือไม่โดยไม่ต้องใช้รหัส PHP ที่เกี่ยวข้อง
shmeeps

61

php7:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

24
ในขณะที่ข้อมูลโค้ดนี้อาจแก้ปัญหาได้รวมถึงคำอธิบายว่าทำไมและวิธีแก้ปัญหานี้จะช่วยปรับปรุงคุณภาพของโพสต์ของคุณได้อย่างไร จำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตไม่ใช่เพียงแค่คนที่ถามตอนนี้! โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายและระบุข้อ จำกัด และสมมติฐานที่ใช้
Toby Speight

4
คำตอบนี้คือ linux ที่เกี่ยวข้องกับ topicstarter อย่างชัดเจนโดยใช้ windows
Raymond Nijland

3
@ RaymondNijland จริง แต่นี่เป็นมาตรฐานและฉันพบคำถามนี้และมันช่วยฉันในการแก้ไขปัญหาหลังจากผ่านไปหนึ่งชั่วโมง
Goose

อย่างไรและทำไม: สิ่งนี้เกิดขึ้นเมื่อ PHP7 ไม่ได้กำหนดค่าบริการ fast-CGI เริ่มต้นใน make script sudo a2enmod proxy_fcgi setenvifสร้างตัวดัดแปลงใหม่สามตัวใน/mods-available/proxy.conf proxy_fcgi.load proxy.loadทำนองเดียวกันsudo a2enconf php7.0-fpmสร้างไฟล์กำหนดค่า/conf-available/php7.0-fpm.confเมื่อเสร็จแล้ว Apache2 สามารถเรียกใช้โมดูล PHP7 เป็นบริการแบบ CGI ที่รวดเร็ว
Talvi Watia

33

ฉันใช้งาน Apache บน Ubuntu และปัญหาของฉันคือ/etc/apache2/mods-available/php5.confไฟล์หายไป:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

ฉันเพิ่มมันกลับมาและ php แยกไฟล์ php ได้อย่างถูกต้อง


31

หมายเหตุสำหรับผู้ใช้ php 7 เพิ่มไปยังไฟล์ httpd.conf ของคุณ:

# PHP 7 specific configuration
<IfModule php7_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

4
เพียงเพื่อช่วยคนอื่นในเรื่องนี้ httpd.confไฟล์ตั้งอยู่/etc/apache2/httpd.confหากคุณกำลังใช้อูบุนตูก็จะเป็นapache2.confในไดเรกทอรีเดียวกันที่ต้องมีการปรับเปลี่ยนเพื่อ PHP7
อาเหม็ด Sagarwala

23

ฉันพบปัญหาอื่นที่ทำให้เกิดปัญหานี้และแก้ไขได้แล้ว ฉันบันทึกสคริปต์โดยไม่ได้ตั้งใจในการUTF-16เข้ารหัส ดูเหมือนว่า PHP5 ไม่สามารถรับรู้<?phpแท็กในการเข้ารหัส 16 บิตโดยค่าเริ่มต้น


18

ฉันโพสต์คำตอบนี้เพราะส่วนต่อประสานผู้ดูแลระบบ Virtualmin / Webmin ของฉันตัดสินใจว่ามันเป็นความคิดที่ดีที่จะปิดการใช้งานเครื่องมือ PHP ของฉัน .. ใช้เวลาสักครู่เพื่อค้นหาวิธีแก้ไขปัญหาดังนั้นฉันคิดว่าฉันจะแบ่งปันกับคุณ

นอกจากนี้อย่าลืมตรวจสอบว่าไม่มีไฟล์ปรับแต่งเว็บไซต์ของคุณที่เกี่ยวข้องกับโฮสต์หรือ virtualhost นี้มี php_admin_value ของพวกเขาที่ปิด PHP เช่นนี้:

php_admin_value engine Off

เมื่อมีข้อสงสัยแสดงความคิดเห็นมัน ...

# php_admin_value engine Off

และรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ


1
การตั้งค่าคอนฟิกเหล่านี้อยู่ที่ไหนกันแน่
cronoklee

2
@cronoklee ในการตั้งค่า vHost ของ httpd.conf สำหรับโฮสต์ที่มีอยู่คุณต้องแก้ไข apache config ใน webmin สำหรับโฮสต์ในอนาคตให้ไปที่ virtualmin> แม่แบบเซิร์ฟเวอร์> เว็บไซต์ apache อย่างไรก็ตามนี่ไม่ปลอดภัยเท่ากับ fastcgi - ค่าเริ่มต้นของ virtualmin ดังนั้นวิธีที่ถูกต้องควรแก้ไขปัญหาที่ fcgi ไม่ทำงานตัวอย่างเช่นอาจเกิดจากการอนุญาตของไฟล์
Sheepy

หากคุณใช้ Apache เวอร์ชันที่ไม่มี httpd.conf ให้ดูใน/etc/apache2/mods-enabled/php7.confหรือphp5.conf
Sam Malayek

เมื่อมีข้อสงสัยเกี่ยวกับตำแหน่งของการตั้งค่าบางอย่างคุณสามารถใช้ grep เพื่อค้นหาสิ่งที่คุณกำลังค้นหา (ตัวอย่างเช่นในกรณีนี้) พิมพ์:sudo grep php_admin_value /etc/* -R
Henry van Megen

17

คุณเพิ่งเปิดไฟล์ php ของคุณไปยังเบราว์เซอร์ คุณต้องเปิดมันโดยใช้ localhost url หากคุณเปิดไฟล์โดยตรงจากไดเรกทอรีของคุณมันจะไม่เรียกใช้งานโค้ด php ในทุกกรณี

ใช้: http://locahost/index.phpหรือhttp:127.0.0.1/index.php

เปิดใช้งานรหัสสั้น php ในกรณีของคุณคุณกำลังใช้<?ซึ่งเป็นรหัสสั้น php <?phpสำหรับ โดยค่าเริ่มต้นรหัสสั้น php ถูกปิดใช้งาน

ยังใช้: sudo apt-get install php5 libapache2-mod-php5 php5-mcryptถ้าคุณเป็นผู้ใช้อูบุนตู


1
ทำไมต้องใช้ mcrypt เมื่อฉันเพิ่งรวมไฟล์? คุณควรสังเกตว่าคำถามนี้เก่าและมีการพูดถึงแท็กสั้น ๆ ถึง 16 ครั้งรวมถึงความคิดเห็นสูงสุดของคำถามของฉัน
Gui

1
ฉันเพิ่งแบ่งปันวิธีแก้ปัญหาของฉันฉันก็พบข้อผิดพลาดเดียวกันและหลังจากดำเนินการคำสั่งของ mcrypt ปัญหาของฉันนี้ได้รับการแก้ไข คุณอาจลอง
Hasan Baig

โดยค่าเริ่มต้นรหัสสั้น php เปิดใช้งาน short_open_tag = เปิด (ค่าเริ่มต้น = เปิด) ใน php 5.6
zond

นี่เป็นปัญหาของฉันการกำหนดค่า virtualmin / apache ของฉันสำหรับ 127.0.0.2 แต่ฉันกำลังใส่ที่อยู่ IP ภายนอกของฉันในเบราว์เซอร์ฉันเพิ่งอัปเดต v / a config ของฉันและตอนนี้มันใช้งานได้แล้ว
Hayden Thring

ฉันเพิ่งหายไปจาก libapache2-mod-php7.3
dxvargas

8

ฉันรู้ว่ามันควรจะฟังดูไร้สาระ ... แต่ไม่ค่อยเกิดขึ้น

ตรวจสอบว่าคุณพยายามเรียกใช้งาน php จากหรือไม่

**http://localhost/info.php**

และไม่ได้มาจาก

file:///var/www/info.php

ps> คุณสามารถสังเกตเห็นว่าถ้าคุณเขียนจากเปลือก

php info.php 

มันตอบด้วยรหัส (มันหมายถึงฟังก์ชั่น PHP) ..


PHP ทำงานได้ดี (ตรวจสอบโดยใช้บรรทัดคำสั่ง) แต่เมื่อฉันเข้าถึงไฟล์โดยใช้ URL มันจะแสดงโค้ด PHP
muaaz

8

สิ่งนี้เพิ่งเกิดขึ้นกับฉันอีกครั้งพร้อมกับเซิร์ฟเวอร์ที่ดาวน์โหลดไฟล์ html แทนที่จะประมวลผล ฉันไม่ได้ใช้ apache เว็บเซิร์ฟเวอร์เป็นระยะเวลาหนึ่งในคอมพิวเตอร์และในขณะเดียวกัน Ubuntu ก็อัปเดตเหมือนสองรุ่นจาก LTS ที่ติดตั้งมา แต่เดิม ตอนนี้มันเป็น

$ cat /etc/issue
Ubuntu 16.04 LTS

php ทำงานหลังจากนั้นดังนั้น:

$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart 

เว็บเซิร์ฟเวอร์แยกวิเคราะห์ php แล้ว บางทีตอนนี้อาจต้องมีการอัพเดตบางเว็บตั้งแต่ php7.0 ตอนนี้ทำงานที่ไหนเหมือนเดิมก่อนที่จะใช้ php5 โอ้ดี


5

ฉันได้แก้ไขสิ่งนี้แล้วโดยถอนการติดตั้ง XAMPP และติดตั้ง WAMP ขอบคุณสำหรับความช่วยเหลือ


ฉันเป็น xampp แต่ก็ใช้งานได้ดี คุณพบว่าทำไมมันแสดงรหัส php @Gui
Pie

5

ฉันประสบปัญหานี้ใน php 7.1 ที่มาพร้อมกับ High Sierra (OS X 10.13.5) การแก้ไข/etc/apache2/httpd.confด้วยการเปลี่ยนแปลงต่อไปนี้ช่วยได้:

  1. ไม่แสดงข้อคิดเห็นบรรทัดนี้

    LoadModule php7_module libexec/apache2/libphp7.so
  2. วางต่อไปในตอนท้าย

    <IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>

เช่นเดียวกันคุณสามารถกรุณาแนะนำ Wamp 3 ข้อผิดพลาดรุ่นเดียวกัน ไม่มี /etc/apache2/httpd.conf โฟลเดอร์พา ธ ใน wamp 3 @AamirR
Gem

สิ่งนี้ได้ผลสำหรับฉัน !!! ฉันเป็นปัญหาที่แปลกมาก บางไฟล์แสดงผลเป็น PHP และอื่น ๆ ไม่ได้และเพิ่งแสดงรหัส
sjw0525

4

บน Ubuntu ของฉัน 14.04, apache 2.4, php 5.5.9 ติดตั้งฉันลองใช้ sample.php บน / var / www / html (รูทเอกสารเริ่มต้น) และมันก็ใช้ได้ ดังนั้นปัญหาคือการกำหนดค่าเซิร์ฟเวอร์เสมือนของฉัน การแก้ปัญหาคือการรวมใน def ไดเรกทอรีที่มี. php บรรทัดนี้:

    php_admin_flag engine on

และฉันควรเพิ่มบรรทัดนี้ในไฟล์ Apache ใน httpd.conf ของเซิร์ฟเวอร์เสมือนของฉันอย่างไร และฉันกำลังใช้ Webmin
suresh pareek

4

ตรวจสอบให้แน่ใจว่าสคริปต์มี

<?php

ก่อนรหัสที่ควรดำเนินการ ไม่ควรมีช่องว่างระหว่าง<?และphpในนี้


3

ฉันมีปัญหาที่คล้ายกัน แต่ในการแก้ปัญหากรณีของฉันแตกต่างกัน ไฟล์ของฉันที่ถือรหัส php ถูกเรียกว่า"somename.html" เปลี่ยนเป็น"somename.php"ได้ผล


สิ่งนี้ก็แก้ไขให้ฉันด้วย ไม่มีใครทราบว่าเซิร์ฟเวอร์จะดำเนินการ php ในไฟล์. html หรือไฟล์สิ้นสุดจะต้องเปลี่ยนเป็น. php ทุกครั้งเมื่อมีบรรทัดของ php ที่จะดำเนินการหรือไม่
full_prog_full

ขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์ส่วนใหญ่รหัส php ที่มีอยู่ใน anyfile.html จะทำงาน และหากไม่เป็นเช่นนั้นสามารถเปลี่ยนได้แม้ว่าจะเป็น idk อย่างไร: P
Netrus

3

สำหรับการติดตั้งใหม่ของ LAMP ที่กำลังรัน php 7 ให้แก้ไขไฟล์ /etc/httpd/conf/httpd.conf หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้ทำการสำรองข้อมูลไว้ก่อนที่จะทำการเปลี่ยนแปลงอะไร

วางสิ่งนี้ไว้ที่ด้านล่างสุดของไฟล์:

<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

จากนั้นค้นหา LoadModule และวางบรรทัดต่อไปนี้:

LoadModule php7_module modules/libphp7.so

บรรทัดนี้จะขอให้ httpd โหลดโมดูล php 7

จากนั้นเริ่ม httpd ใหม่


3

ตรวจสอบแพ็คเกจทั้งหมดที่คุณติดตั้งสำหรับphpโดยใช้:

yum list installed | grep remi

ติดตั้งแพ็คเกจphp ที่เกี่ยวข้องทั้งหมดโดยเฉพาะphp-develบนเครื่องของคุณ


2

นี่คือใน. htaccess ของฉัน

DirectoryIndex index.html index.htm

index.html มีรหัส PHP โดยค่าเริ่มต้น PHP จะไม่ประมวลผลไฟล์ที่มีขอบเขตอย่าง htm * เป็นโค้ด PHP

คุณสามารถลบล้างสิ่งนี้ได้โดยเพิ่มสิ่งต่อไปนี้ใน. htaccess:

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

1

ฉันคิดว่าปัญหาที่มันแสดงรหัสแทนผลลัพธ์คือมันไม่ได้ไปที่โลคัลโฮสต์ ตรวจสอบอีกว่าที่อยู่ที่คุณกำลังจะไปคือไปที่ไดเรกทอรีไฟล์ท้องถิ่นหรือไปยังโฮสต์ท้องถิ่น

จากภาพหน้าจอที่คุณส่งมันจะไปที่คอมพิวเตอร์ของคุณไม่ได้ไปยัง localhost

"file: ///" ควรเป็น "localhost /"


1

การติดตั้งmcryptโมดูลอีกครั้งทำงานให้ฉัน

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt

มันทำอย่างสุจริตอาจเป็นเพราะฉันไม่ได้กำหนดค่า PHP อย่างถูกต้องในระบบของฉัน แต่เนื่องจากคำถามที่ฉันถามเกี่ยวกับปัญหาเดียวกันถูกทำเครื่องหมายว่าซ้ำกับคำถามนี้ฉันสามารถตอบได้ที่นี่เท่านั้น ฉันสงสัยว่าทำไมลงคะแนนเสียง
bg

คำตอบนี้เกี่ยวข้องกับลินุกซ์หัวข้ออย่างชัดเจนคือการใช้ windows
Raymond Nijland

1

ฉันมีกรณีที่ฉันเริ่มเปิดไฟล์ใน root โดยไม่ตั้งใจ มันเพิ่มไฟล์. htaccess จากโฟลเดอร์ไฟล์ของฉันที่จะบล็อก php ทั้งหมด

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

บรรทัดล่างตรวจสอบไฟล์. htaccess บนรูท


1

หากคุณมีการกำหนดค่าเช่นนี้:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/example.com"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

ไม่แสดงข้อคิดเห็นบรรทัดถัดไปใน httpd.conf ของคุณ

LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so

มันใช้งานได้สำหรับฉัน



1

เพียงแค่ใช้เวลาหลายชั่วโมงในการพยายามที่จะได้รับPHP 5 ในการทำงานด้วย Apache 2.4 บน Windows 10 สุดท้ายสำหรับฉันมันเป็นคำสะกดผิดในhttpd.conf LoadModuleดึงความสนใจไปเขียนและเส้นทางโมดูลที่แน่นอนผ่านคำตอบสุดท้ายในหัวข้อ apachelounge นี้ denny2018 ขอบคุณ!

หลังจากสองคืนฉันค้นพบ ... ไดเรกทอรีของฉันถูกเขียนc:(ตัวพิมพ์เล็ก)

ฉันมีLoadModule php5_module "c:/php/php5apache2.dll"แต่ถูกต้องสำหรับ apache 2.4คือ:

LoadModule php5_module "C:/php/php5apache2_4.dll"

ดังนั้นฉันจึงพลาด_4มาก่อน (สำหรับapache 2.4 ) ตัวอย่างเต็มรูปแบบที่ทำงานสำหรับฉัน:

# PHP
LoadModule php5_module "C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

เพียงแค่พยายามPHP 7 มีLoadModuleบรรทัดในhttpd.confสำหรับ Apache 2.4 อ่าน

LoadModule php7_module "C:/php/php7apache2_4.dll"

ปัจจุบันphp manual แสดง c:/php/php5apache2.dllว่าต้องปรับอะไรแน่นอน


1

ในกรณีของฉัน (Apache / 2.4.34)

หลังจากยกเลิกการใส่เครื่องหมายโมดูลเฉพาะ

"LoadModule php7_module libexec / apache2 / libphp7.so"

จาก

"/etc/apache2/httpd.conf"

ปัญหาของฉันหายไป


1

ในกรณีที่เราอยู่ในหน้าเดียวกันให้ทำตาม

sudo apt-get install php -y sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y

ในการเปิดใช้งาน PHP 7.2 FPM ใน Apache2 ให้ทำดังนี้

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

อัปเดต 2: ไฟล์ Apache .php ดาวน์โหลดแทนการเรนเดอร์

หลังจากนั้นฉันก็พบปัญหาข้างต้น มีคำถามที่คล้ายกันเช่นมีนี้

ฉันไม่รู้ว่าทำไม แต่เกิดขึ้นกับไฟล์. php ของฉันใน/var/www/html/โฟลเดอร์รูทเท่านั้น ทุกอย่างก็โอเคสำหรับไดเรกทอรีย่อย (เช่น wordpress และ phpmyadmin ทำงานได้ดี)

นี่คือทางออกของฉัน ฉันตัดสินใจเปิดใช้งานโมดูล php ดังนั้นฉันจึงใช้คำสั่งนี้:

a2enmod php7.2

แต่ฉันได้รับข้อผิดพลาดนี้:

การพิจารณาการพึ่งพา mpm_prefork สำหรับ php7.2: พิจารณาความขัดแย้ง mpm_event สำหรับ mpm_prefork: ข้อผิดพลาด: โมดูล mpm_event ถูกเปิดใช้งาน - ไม่สามารถดำเนินการต่อได้เนื่องจากความขัดแย้ง จะต้องปิดการใช้งานก่อน! พิจารณาความขัดแย้ง mpm_worker สำหรับ mpm_prefork: ข้อผิดพลาด: ไม่สามารถเปิดใช้งานการพึ่งพา mpm_prefork สำหรับ php7.2, ยกเลิก

ดังนั้นฉันตัดสินใจที่จะปิดการใช้งาน mpm โดยใช้คำสั่งต่อไปนี้:

sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event

จากนั้นรีสตาร์ท apache:

systemctl restart apache2

จากนั้นเปิดใช้งาน php7.2 (เวอร์ชันที่ติดตั้งของฉัน):

sudo a2enmod php7.2

และตอนนี้ทุกอย่างทำงานได้ดี


0

สาเหตุที่เป็นไปได้อีกอย่างของปัญหานี้อาจเป็นได้ว่าคุณพยายามเรียกใช้สคริปต์ใน "ไดเรกทอรีผู้ใช้" จาก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>

-1

ไฟล์ที่คุณใส่ใน / var / www / html / ควรมี. php forexample example.php ถ้าเป็นตัวอย่างมันไม่ทำงาน แต่ถ้าคุณเปลี่ยนเป็น example.php จะใช้งานได้

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