Vagrant,nginx 404-stderr 中发送的 fastcgi 无法打开主脚本

Vagrant,nginx 404-stderr 中发送的 fastcgi 无法打开主脚本

在 Google 上搜索了很多,但没找到解决方案。在 stackoverflow 上找到了一些可接受的答案,但它们对我没有帮助。

我正在使用 vagrant 进行开发,或者至少尝试使用它。安装它没有问题,但当我尝试运行网站时,我得到了 404,我猜这是 nginx 的问题,而不是 vagrant 的问题。

我已将 127.0.0.1 lara.dev 添加到我的 Windows 主机

这是我的 nginx 站点配置:

server {
    listen 80;
    server_name lara.dev;
    root C:/xampp/htdocs/lara/public;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/lara.dev-error.log error;

    error_page 404 /index.php;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

在日志文件中我得到了这个:

FastCGI sent in stderr: "Unable to open primary script: /usr/share/nginx/C:/xampp/htdocs/lara/public/index.php (No such file or directory)" while reading response header from upstream, client: 10.0.2.2, server: lara.dev, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "lara.dev:8000"

和我的家园档案

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: C:/Users/Tim/.ssh/general.pub

keys:
    - C:/Users/Tim/.ssh/general

folders:
    - map: C:/xampp/htdocs/
      to: /home/vagrant/html

sites:
    - map: lara.dev
      to: /home/vagrant/html/lara/public/

databases:
    - homestead

variables:
    - key: APPLICATION_ENV
      value: env-localhost

流浪文件:

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"

homesteadYamlPath = File.expand_path("~/.homestead/Homestead.yaml")
afterScriptPath = File.expand_path("~/.homestead/after.sh")
aliasesPath = File.expand_path("~/.homestead/aliases")

require_relative 'scripts/homestead.rb'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    if File.exists? aliasesPath then
        config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
    end

    Homestead.configure(config, YAML::load(File.read(homesteadYamlPath)))

    if File.exists? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath

结束 结束

这更有可能是 php5-fpm 的配置出了问题。但我不知道是什么问题。提前谢谢。

答案1

根据输出:

无法打开主脚本:/usr/share/nginx/C:/xampp/htdocs/lara/public/index.php(没有此文件或目录)

看起来你引用的是 Windows 样式的路径 ( C:/),但在 Linux 虚拟机上运行 nginx ( /usr/share/nginx)。默认情况下,Vagrant仅共享一个文件夹,它是您的主机(Windows)和/vagrant客户机(Linux)上的项目文件夹。

您的客户机无法访问未共享的文件夹,因此 nginx 也无法访问。

大多数基于 Vagrant 的项目将应用程序的内容放在项目文件夹的根目录中,在这种情况下,您可以将指令更改root为:

root /vagrant

如果您的项目位于名为的文件夹中app

root /vagrant/app

您还可以选择通过编辑Vagrantfile、重新启动客户机,然后使用中的新同步文件夹来映射更多文件夹root

相关内容