在 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
。