Недавно я установил последнюю версию 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
Попробуйте еще один * 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.
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
Включение с быстрыми параметрами cgi должно превышать эту строку.
Все ваши каталоги до исполняемого файла 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 чисто, он просто вернулся к нормальной жизни.
Надеюсь это поможет.