Nginx / FPM / PHP tất cả các tệp php đều nói 'Không tìm thấy tệp.'


8

tôi vừa cài đặt nginx 1.1.13 và php 5.4.0 trên máy 64 bit cuối cùng 5,8 centos. Nginx và PHP / Fpm đang chạy và tôi có thể chạy các tập lệnh php thông qua dòng lệnh ssh, nhưng trong trình duyệt tôi vẫn nhận được 'Không tìm thấy tệp.' lỗi trên tất cả các tệp PHP của tôi.

Đây là cách tôi có nginx.conf xử lý các tập lệnh PHP:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Đây là bản sao / dán trực tiếp từ các máy chủ khác của tôi, nơi nó hoạt động tốt với thiết lập này (nhưng chúng chạy các phiên bản cũ hơn của php / fpm).

Tại sao tôi nhận được những lỗi đó?


1
Đừng bận tâm, nó đã được sắp xếp. Đó là một vấn đề quyền ngớ ngẩn.
Mr.Boon

Câu trả lời:


17

Đặt "bao gồm fastcgi_params;" trước tất cả các dòng "fastcgi_param *", "bao gồm fastcgi_params;" ghi đè tất cả các dòng "fastcgi_param *" của bạn (xem nhật ký gỡ lỗi nginx):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}

3
Man, tôi đã lãng phí 4 giờ cho nó và câu trả lời của bạn đã giúp tôi.
chuyên gia

Tôi đã cố gắng khắc phục vấn đề này từ hôm qua. Câu trả lời của bạn đã giúp tôi rất nhiều! Cảm ơn bạn!!!
Kacper Kołodziej

1
Làm thế nào để chúng ta làm điều này mà không mã hóa đường dẫn? $ document_root vars dường như không wokring?
dùng1179459

3

Tôi gặp vấn đề tương tự.

Những gì tôi đã làm để giải quyết vấn đề này là kiểm tra người dùng đang chạy nginx, php-fpm và kiểm tra quyền của họ để truy cập vào thư mục gốc. Nó được mặc định là 'www-data'.

nhưng bạn có thể tìm ra bằng cách sử dụng các lệnh ps aux | grep php-fpmps aux | grep nginx.

Bạn phải đảm bảo thư mục có thể truy cập được đối với người dùng đang chạy các quy trình này.


Cảm ơn bạn đã đầu mối. Tôi đã cố gắng lưu trữ các dự án của mình sâu bên trong thư mục Dropbox của tôi, có 700 quyền theo mặc định. Thay đổi quyền Dropbox thành 755 đã giải quyết vấn đề.
Rodion Baskakov

1

Tôi đã có cùng một vấn đề và đối với tôi đó là một lệnh "root" không đúng cấu hình / không tồn tại trong cấu hình máy chủ nginx


1

Tôi sử dụng cấu hình như vậy, mong muốn nó có thể giúp bạn. Nó hoạt động trong OS X. Đối với tôi, câu trả lời của @Xosofox đã hoạt động. Tôi đã nhầm phiên bản nginx 1.6.2 là 1.2.6, để root trở thành một thư mục không tồn tại.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}

0

Tôi giải quyết vấn đề này bằng cách thay đổi người dùng và nhóm tho người dùng hiện tại: nhóm trong php-fpm.d / www.conf

Theo mặc định, người dùng và nhóm là 'nginx', thay đổi điều này ....

Hi vọng điêu nay co ich

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.