Apache ไม่ได้รันไฟล์ PHP แต่ทำให้ฉันดาวน์โหลดได้


15

ดังนั้นฉันจึงติดตั้งเซิร์ฟเวอร์โดยใช้บทช่วยสอนนี้และเมื่อไฟล์ test.php ทำงานได้อย่างไม่มีปัญหาเมื่อฉันป้อนที่อยู่โดยใช้ IP ของเซิร์ฟเวอร์เป็น

http://1.2.3.4/test.php

อย่างไรก็ตามถ้าฉันใช้ virtualhosts เบราว์เซอร์เพิ่งเสนอให้ดาวน์โหลดไฟล์แทนที่จะเรียกใช้งาน ดังนั้นนี่คือ:

http://blog.mydomain.com/test.php

ข้อเสนอในการดาวน์โหลดไฟล์แทนที่จะเรียกใช้สคริปต์

รหัสที่ฉันใช้ใน /etc/apache2/apache2.conf สำหรับโฮสต์เสมือนมีดังต่อไปนี้:

Include /etc/phpmyadmin/apache.conf
Include /etc/apache2/mods-available/php5.conf

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder1
    ServerName www.mydomain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /path/to/vhosts/folder2
    ServerName blog.mydomain.com
</VirtualHost>

NameVirtualHost *:80

แม้ว่าฉันต้องบอกว่าเมื่อฉันรีสตาร์ทเซิร์ฟเวอร์ apache2 ฉันได้รับข้อความเตือน:

[....] Restarting web server: apache2
[Sun Jan 19 13:33:40 2014] [warn] NameVirtualHost *:80 has no VirtualHosts ... waiting [Sun Jan 19 13:33:41 2014] [warn] NameVirtualHost *:80 has no VirtualHosts

คุณรู้หรือไม่ว่านั่นคือเซิร์ฟเวอร์ LAMP
Braiam

@Braiam บอกตามตรงฉันหลงทางระหว่าง LAMP และ Apache ... ฉันไม่รู้ความแตกต่าง ... อย่างไรก็ตามคุณได้รับคำตอบสำหรับคำถามของฉันหรือไม่
นักฟิสิกส์ควอนตัม

ฉันจะหาไดเรคทอรี่นี้ได้ที่ไหน มันไม่ทำงานสำหรับฉัน กรุณาช่วย? ฉันจะโหลดเทอร์มินัล vhost vie ได้อย่างไร
พระเจ้าโลก

@Godworld ไดเรกทอรีอะไร? ไฟล์ config ของ Apache อยู่ใน/etc/apache2/ระบบ
นักฟิสิกส์ควอนตัม

1
มีความเป็นไปได้ที่ซ้ำกันของสคริปต์ PHP ที่ไม่ได้ทำงานบนเซิร์ฟเวอร์ Apache
Florian Diesch

คำตอบ:


19

ฉันได้มันมาทำงานกับสาย:

sudo apt-get install libapache2-mod-php7.0

sudo service apache2 restart

ขอขอบคุณที่ตั้งชื่อห้องสมุดนี้ ฉันรู้ว่าฉันต้องติดตั้งไลบรารีเพื่อแก้ไขปัญหานี้ แต่ไม่ทราบชื่อ
ราหุลประสาท

libapache2-mod-php7.0แพคเกจที่ไม่อยู่ในที่เก็บ Ubuntu หลัก ไม่จนกว่าจะมีการเปิด 16.04 คุณควรใช้libapache2-mod-php5แทน
ด่าน

4

บางครั้งสิ่งที่เลวร้ายยิ่งสามารถเกิดขึ้นได้ .... ฉันลืมติดตั้ง php


5
ฉันแทบจะคิดว่านี่อาจเรียกได้ว่าเป็นคำตอบที่แท้จริง แต่ฉันคิดว่ามันเป็น sorta
เซท

3
เมื่อคุณมีจำนวนเครื่องที่เหมาะสมและมันก็สมเหตุสมผลในตอนเย็นนี่เป็นคำตอบที่ถูกต้องแน่นอน
Avio

1
คำตอบที่ถูกต้องแน่นอน ฉันมีปัญหาในการเล่นปาหี่ php5, php5-cli, php5-fpm และ php-whatnot Apache ขาดแพ็คเกจที่ถูกต้องไป
famousgarkin

0

ผมพบว่าวิธีการแก้ปัญหาที่นี่ ปรากฎว่าฉันต้องเปิดใช้งานบางโมดูล ...


นำมาจากคำตอบ Stack Overflowโดยuser1075581 :

ในที่สุดนี่ทำให้ฉันอยู่บนเส้นทางที่ถูกต้อง:

http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/

นี่คือทางออก:

ใน<Directory>ส่วนฉันรวมบรรทัดเหล่านี้:

<IfModule sapi_apache2.c>
    php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>

หรือคัดลอก / วางโซลูชันบนเซิร์ฟเวอร์ของฉัน:

<Directory "/var/www/vhosts/A2/httpdocs">
    <IfModule sapi_apache2.c>
        php_admin_flag engine on
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
    </IfModule>

    (Other configuration parameters)

</Directory>

0

ฉันค้นหาสิ่งนี้มาเป็นเวลานานและเพิ่งพบโซลูชันที่ใช้งานได้ในกรณีของฉัน ฉันใส่ไฟล์ของฉัน ( processorder.php5) ในไดเรกทอรี/var/wwwในการติดตั้งอูบุนตูมาตรฐาน ฉันคิดว่านี่เป็นสถานที่ที่ php ดู แต่สำหรับ HTML (หรือ PHP ไฟล์ที่อาจจะได้รับการพิจารณาในสิ่งเดียวกัน) มันมองใน/var/www/htmlคือไดเรกทอรีย่อยของhtml/var/www

เมื่อฉันย้ายไฟล์ของฉันไปยังไดเรกทอรีมันใช้งานได้ ฉันสงสัยเพราะฉันไม่คิดว่าฉันเคยเห็นเอกสารนี้ที่ไหน


0

ปัญหาการอนุญาตอาจทำให้เกิดพฤติกรรมแปลก ๆ เช่นนี้ได้

chmod -R u=rwX,go=rX my_publishing_directory

จะกำจัดปัญหาการอนุญาต (644 ในไฟล์และ 755 ในไดเรกทอรี)

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