NGINX ไม่เรียกใช้งานไฟล์ PHP


9

ฉันไม่พบคำตอบสำหรับสิ่งนี้ ติดตั้ง PHP5 + NGINX + PHP-FPM แล้วและไม่สามารถเรียกใช้ไฟล์ php ได้จะได้รับ "อ๊ะ! ลิงก์นี้ดูเหมือนจะใช้งานไม่ได้" ข้อผิดพลาดใน CHROME ฉันไม่มีรายงานบันทึกข้อผิดพลาดที่มีค่าฉันมี index.php ในรูทพยายามสร้างไฟล์ phpinfo.php ที่กำหนดเองไม่ทำงาน

ฉันสามารถโหลดไฟล์ HTML ได้ แต่ไม่สามารถ PHP ได้

นี่คือการกำหนดค่าไซต์ท้องถิ่นของฉันใน NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

เปลี่ยนความเป็นเจ้าของของไดเรกทอรีทั้งหมดเป็น www-data: www-data ทำ 777 ในไฟล์ php ไม่มีอะไร รีสตาร์ท nginx, FPM แล้วไม่มีอะไร

ช่วยด้วย? :(


ดูในบันทึกข้อผิดพลาดของคุณ
Mike

ทำแล้ว "ฉันไม่มีรายงานบันทึกข้อผิดพลาดที่มีค่า" มันว่างเปล่าอย่างสมบูรณ์
Gabriel A. Zorrilla

คุณต้องการข้อมูลเพิ่มเติมเพื่อวินิจฉัยปัญหา ฉันขอแนะนำให้เริ่มต้นด้วยการเพิ่ม 'fastcgi_intercept_errors on' เพื่อกำหนดค่าของคุณ (ถ้าไม่ได้อยู่ใน fastcgi_params) เพื่อบันทึกข้อผิดพลาด FPM เพิ่ม 'ดีบัก' ลงในบรรทัด error_log ของคุณเพื่อรับรายละเอียดเพิ่มเติม (ตรวจสอบข้อผิดพลาดหลัก nginx error_log (อาจอยู่ใน / var / log)) คำสั่ง server_name ของคุณดูเหมือนผิดปกติ - ไม่แน่ใจว่าคุณได้แทนที่คำตอบนี้หรือไม่ ตามคำแนะนำทั่วไปให้ย้ายคำสั่งรูทของคุณออกจากบล็อกตำแหน่งของคุณ (ข้อเสนอแนะสุดท้าย (ไม่น่าเป็นไปได้): ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เริ่มต้นของคุณไม่แสดงหน้า html ที่คุณเห็น)
cyberx86

คำตอบ:


9

มันจะได้รับ "โอ๊ะโอ! ลิงก์นี้ดูเหมือนจะเสียหาย" ข้อผิดพลาดใน CHROME

Chrome จะแสดงหน้าข้อผิดพลาดของตนเองหากหน้าข้อผิดพลาดน้อยกว่า 512 ไบต์

ฉันสงสัยว่าคุณมีบรรทัดต่อไปนี้ในfastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

และถ้าเป็นเช่นนั้นเพราะrootคำสั่งที่กำหนดไว้location /จะไม่ถูกนำไปใช้กับlocation ~ \.php$ดังนั้นจึงSCRIPT_FILENAMEกลายเป็น URI

สิ่งนี้สามารถแก้ไขได้โดยการย้ายrootคำสั่งไปยังserverบริบทระดับ:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

การเล่นชนิดหนึ่ง ย้าย root บล็อกเซิร์ฟเวอร์ตามที่แนะนำและใช้งานได้ ขอบคุณ!
Gabriel A. Zorrilla

@quanta: OP แก้ไขการตั้งค่าในคำถามของเขาหรือไม่? เนื่องจากมันเป็นเส้นทางแบบ hardcoded มันควรจะทำงานได้อย่างสมบูรณ์แบบเมื่อมีการกำหนดคำสั่งรูทในบริบทตำแหน่ง กรณีเดียวที่มันไม่ทำงานคือถ้าเขากำหนด SCRIPT_FILENAME ในไฟล์ fastcgi_params ของเขาโดยใช้ $ document_root และทำให้ฮาร์ดโค้ดของเขาทับ
Martin Fjordvald

@MartinF: ไม่ OP ไม่ได้แก้ไขการกำหนดค่า คุณถูก. ฉันจะแก้ไขคำตอบของฉัน
quanta

-3

ในกรณีของฉันมันหายไปแพคเกจ php-zip เพื่อแก้ไขปัญหานี้ฉันวิ่ง:

yum install -y php-zip
systemctl restart php-fpm nginx

3
เห็นได้ชัดว่าสาเหตุของ OP คือเพื่อสิ่งอื่นโดยสิ้นเชิง
สเวน

ไม่ได้หมายความว่าคนที่หาทางมายังหน้านี้ด้วยปัญหานี้จะมีสาเหตุเช่นเดียวกับ OP พวกเขาอาจมีสาเหตุที่ wejdross ทำและพบว่าคำตอบนี้มีประโยชน์ คำถามนั้นไม่เฉพาะเจาะจงสำหรับสาเหตุนั้น แต่เฉพาะกับอาการนั้นและเห็นได้ชัดว่ามีหลายสาเหตุสำหรับปัญหาดังนั้นผู้คนที่มีสาเหตุที่แตกต่างกันอาจจบลงที่นี่
Synetech

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
ยินดีต้อนรับสู่ Server Fault! ดูเหมือนว่าคุณอาจมีความรู้ในการให้คำตอบที่ดีที่นี่ แต่โปรดลองอ่านฉันจะเขียนคำตอบที่ดีได้อย่างไร? ในศูนย์ช่วยเหลือของเราจากนั้นแก้ไขและขยายคำตอบของคุณ คำสั่ง / รหัส / การตั้งค่าของคุณอาจเป็นวิธีการแก้ปัญหาทางเทคนิค แต่คำอธิบายบางอย่างก็ยินดีต้อนรับ ขอบคุณล่วงหน้า.
HBruijn

4
นอกจากนี้: แม้ว่าหนึ่งบรรทัดนั้นเป็นสิ่งที่แก้ปัญหามันไปได้ที่ไหน? locationsสหกรณ์การแสดงสอง สายเข้าเป็นหนึ่งเดียวหรือไม่? อื่น ๆ? ทั้งสอง? โปรดแก้ไขคำตอบของคุณเพื่อให้สมบูรณ์
David Makogon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.