2013-07-21 31 views
10

Tôi đang sử dụng cấu hình này trên một cài đặt của php5-fpm và nginx trên ubuntu 13.04 tươi: phpnginx + fastcgi tải cấu hình php My file thay vì thực hiện chúng

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.php index.html index.htm; 

    server_name localhost; 

    location/{ 
      try_files $uri $uri/ /index.html; 
    } 

    location /doc/ { 
      alias /usr/share/doc/; 
      autoindex on; 
      allow 127.0.0.1; 
      allow ::1; 
      deny all; 
    } 

    error_page 404 /404.html; 

    location ~ \.php$ { 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 

      # With php5-cgi alone: 
      fastcgi_pass 127.0.0.1:9000; 
      # With php5-fpm: 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 
} 

Nhưng, trình duyệt web của tôi được nhìn thấy dưới dạng văn bản thay vì kết quả được thực hiện. Tôi nên tìm cách khắc phục sự cố ở đâu?

Trả lời

8

Mã php của bạn đang được hiển thị trực tiếp vì nó không được gửi tới công cụ php, điều đó có nghĩa là khối vị trí đang được khớp và tệp php đang được phục vụ, nhưng tệp php không bị chặn bởi khối php , do đó, vấn đề của bạn là trong khối php. Trong đó khối bạn có 2 fastcgi_pass, một với một cổng (9000) và khác với một ổ cắm unix, bạn không thể có cả hai với nhau, nhưng kể từ khi bạn đã gắn thẻ câu hỏi của bạn với fastcgi vì vậy tôi sẽ giả sử bạn đang sử dụng fastcgi, hãy thử nhận xét dòng này

#fastcgi_pass unix:/var/run/php5-fpm.sock; 
+0

Đó là lạ. Tôi đã có thể thấy rằng fastcgi đang chạy nhưng tôi không thể nhận được đầu ra php bằng cách sử dụng một trong hai dòng để kết nối. Tôi đã cài đặt lại mọi thứ và làm theo hướng dẫn này (http://askubuntu.com/questions/134666/what-is-the-easiest-way-to-enable-php-on-nginx) và mọi thứ dường như đang hoạt động. Cảm ơn! – arby

2

Có vẻ như bạn đang nhận được bộ tiêu đề Loại nội dung sai. Bạn có thể kiểm tra điều này với các công cụ khác nhau. Ví dụ: mở tab "Mạng" của Công cụ dành cho nhà phát triển trong Chrome và sau đó yêu cầu trang. Bạn sẽ thấy "Loại nội dung" được trả lại trong một trong các cột và bạn có thể nhấp vào yêu cầu ở cột bên trái để xem tiêu đề Đáp ứng đầy đủ. Tôi nghi ngờ bạn sẽ tìm thấy tiêu đề được trả lại là "văn bản/đồng bằng" hoặc "ứng dụng/octet-stream" thay vì văn bản/html, có thể bạn muốn.

Nginx thường đặt tiêu đề Loại nội dung mặc định dựa trên tiện ích. Điều này được thực hiện với chỉ thị types, mà tôi không thấy được đề cập ở trên, vì vậy bạn có thể kiểm tra cài đặt của mình ở đó để xác nhận rằng phần mở rộng php được ánh xạ tới văn bản/html. Đặt rõ ràng tiêu đề Content-Type trong đơn đăng ký của bạn cũng có thể hữu ích.

0

tôi đã có thể khắc phục điều này bằng cách cập nhật vhost nginx của tôi bằng cách thay đổi

default_type application/octet-stream;

để

default_type text/html;

Các vấn đề liên quan