Файл не найден при запуске PHP с Nginx

Недавно я установил последнюю версию Nginx и выгляжу так, как будто мне сложно работать с PHP.

Вот файл конфигурации, который я использую для домена:

server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } 

}

Вот ошибка, которую я получаю в файле журнала ошибок:

 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream 

Solutions Collecting From Web of "Файл не найден при запуске PHP с Nginx"

Попробуйте еще один * fastcgi_param * что-то вроде

 fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; 

У меня была проблема с файлом не найдена, поэтому я переместил определение «root» в скобку «сервер», чтобы указать значение по умолчанию для всех местоположений. Вы всегда можете переопределить это, указав любое место в собственном корне.

 server { root /usr/share/nginx/www; location / { #root /usr/share/nginx/www; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } 

В качестве альтернативы, я мог бы определить корень в обоих моих местоположениях.

Наверное, слишком поздно отвечать, но пара вещей, потому что это очень неприятная ошибка. Следующее решение работало на Mac OS X Yosemite.

  1. Это лучше, если у вас есть

fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

  1. Включение с быстрыми параметрами cgi должно превышать эту строку.

  2. Все ваши каталоги до исполняемого файла PHP (включая этот файл) должны иметь разрешения a+x , например

 sudo chmod a+x /Users/ sudo chmod a+x /Users/oleg/ sudo chmod a+x /Users/oleg/www/ sudo chmod a+x /Users/oleg/www/a.php 

В моем случае сам PHP-скрипт возвратил 404-й код. Не имел ничего общего с nginx.

У меня тоже была эта ошибка. В моем случае это было потому, что был другой виртуальный хост, который указывал на тот же корневой каталог.

В моем случае это произошло потому, что права на корневой веб-каталог были установлены неправильно. Для этого вам необходимо находиться в родительской папке, когда вы запускаете это в терминале:

 sudo chmod -R 755 htmlfoldername 

Это будет chmod всех файлов в вашей html-папке, что не рекомендуется для производства по соображениям безопасности, но должно позволить вам видеть файлы в этой папке, чтобы быть уверенным, что это не проблема при устранении неполадок.

Для меня проблема была Typo в пути местоположения.

Может быть, первое, что нужно проверить для этой проблемы

Это путь к проекту.

Я просто потратил около 40 минут, чтобы отладить нерабочий / статус с помощью:

 $ SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php5-fpm.sock 

Он просто произвел ошибку «Файл не найден», в то время как фактические скрипты (которые находятся в файловой системе) работали нормально.

Оказалось, у меня было несколько сиротских процессов php5-fpm. После того, как я убил все и перезапустил php5-fpm чисто, он просто вернулся к нормальной жизни.

Надеюсь это поможет.