NGINX không thực thi các tệp PHP


9

Tôi không thể tìm thấy câu trả lời cho điều này. Đã cài đặt PHP5 + NGINX + PHP-FPM và không thể thực thi các tệp php, nó nhận được "Rất tiếc! Liên kết này dường như bị hỏng." lỗi trong CHROME. Tôi không có bất kỳ báo cáo nhật ký lỗi có giá trị, tôi có một tệp index.php trong thư mục gốc, đã thử tạo một tệp phpinfo.php tùy chỉnh, không hoạt động.

Tôi có thể tải các tệp HTML, nhưng không thể PHP.

Đây là cấu hình trang web cục bộ của tôi trong 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;
    }

}

Thay đổi quyền sở hữu của tất cả các thư mục thành www-data: www-data, tạo một 777 trên tệp php, không có gì. Đã khởi động lại nginx, FPM, không có gì.

Cứu giúp? :


xem nhật ký lỗi của bạn
Mike

Đã làm, "Tôi không có bất kỳ báo cáo nhật ký lỗi có giá trị". Nó hoàn toàn trống rỗng.
Gabriel A. Zorrilla

Bạn cần thêm dữ liệu để chẩn đoán vấn đề. Tôi sẽ đề nghị bắt đầu bằng cách thêm 'fastcgi_intercept_errors vào;' vào cấu hình của bạn (nếu không có trong fastcgi_params) để ghi lại bất kỳ lỗi FPM nào. Đồng thời thêm 'gỡ lỗi' vào dòng error_log của bạn để biết thêm chi tiết (cũng kiểm tra nginx error_log chính (có thể trong / var / log)). Chỉ thị server_name của bạn trông khác thường - không chắc bạn đã thay thế nó cho bài đăng này hay nó thực sự là như thế. Theo khuyến nghị chung, hãy chuyển chỉ thị gốc của bạn ra khỏi khối vị trí của bạn. Đề xuất (cuối cùng (không thể): đảm bảo máy chủ mặc định của bạn không phục vụ các trang html mà bạn có thể thấy).
cyberx86

Câu trả lời:


9

nó nhận được "Rất tiếc! Liên kết này dường như bị hỏng." lỗi trong CHROME.

Chrome hiển thị trang lỗi của riêng mình nếu trang lỗi nhỏ hơn 512 byte.

Tôi nghi ngờ rằng bạn có dòng sau fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

và nếu vậy, bởi vì lệnh rootđược định nghĩa location /sẽ không bao giờ được áp dụng location ~ \.php$, do đó SCRIPT_FILENAMEtrở thành URI.

Điều này có thể được giải quyết bằng cách di chuyển rootchỉ thị đến serverbối cảnh cấp độ:

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;
    }

}

Chơi lô tô. Đã chuyển root khối máy chủ theo đề xuất và làm việc. Cảm ơn!
Gabriel A. Zorrilla

@quanta: OP có chỉnh sửa cấu hình trong câu hỏi của anh ấy không? Vì đó là đường dẫn được mã hóa cứng nên nó vẫn hoạt động hoàn toàn tốt khi chỉ thị gốc được xác định trong ngữ cảnh vị trí. Trường hợp duy nhất không hoạt động là nếu anh ta xác định SCRIPT_FILENAME trong tệp fastcgi_params của mình bằng cách sử dụng $ document_root và do đó ghi đè mã hóa cứng của anh ta.
Martin Fjordvald

@MartinF: Không, OP không chỉnh sửa cấu hình. Bạn đúng. Tôi sẽ chỉnh sửa câu trả lời của tôi.
lượng tử

-3

Trong trường hợp của tôi, nó đã thiếu gói php-zip. Để khắc phục điều này, tôi đã chạy:

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

3
Rõ ràng, nguyên nhân của OP là vì một thứ khác hoàn toàn.
Sven

Điều đó không có nghĩa là ai đó tìm thấy trang này với vấn đề này sẽ có cùng nguyên nhân như OP, họ rất có thể có nguyên nhân mà wejdross đã làm và thấy câu trả lời này hữu ích. Câu hỏi không cụ thể cho nguyên nhân đó, nó đặc trưng cho triệu chứng đó và rõ ràng có nhiều nguyên nhân gây ra nó, vì vậy những người có nguyên nhân khác nhau có thể kết thúc tại đây.
Synetech

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

4
Chào mừng bạn đến với Lỗi Máy chủ! Có vẻ như bạn có thể có kiến ​​thức để cung cấp Câu trả lời tốt ở đây, nhưng vui lòng xem xét cách đọc Làm thế nào để tôi viết Câu trả lời tốt? trong trung tâm trợ giúp của chúng tôi và sau đó sửa đổi và mở rộng về Câu trả lời của bạn. Lệnh / Mã / Cài đặt của bạn về mặt kỹ thuật có thể là giải pháp nhưng một số giải thích được hoan nghênh. Cảm ơn trước.
HBruijn

4
Ngoài ra: ngay cả khi một dòng đó là những gì giải quyết vấn đề, nó đi đâu? OP cho thấy hai locations. Liệu dòng đi trong một? Cai khac? Cả hai? Vui lòng chỉnh sửa câu trả lời của bạn để làm cho nó hoàn thành.
David Makogon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.