【发布时间】:2014-08-26 01:50:54
【问题描述】:
我刚刚按照他们的说明安装了 Laravel Homestead。当我打开http://homestead.app:8000 时,我得到了 nginx 403 禁止的 HTTP 响应。
我尝试将应用程序/存储权限设置为 755,但这不起作用,所以我重新加载了 Vagrant。没有进一步的结果。
我也尝试更改 nginx 配置,但没有成功。
【问题讨论】:
我刚刚按照他们的说明安装了 Laravel Homestead。当我打开http://homestead.app:8000 时,我得到了 nginx 403 禁止的 HTTP 响应。
我尝试将应用程序/存储权限设置为 755,但这不起作用,所以我重新加载了 Vagrant。没有进一步的结果。
我也尝试更改 nginx 配置,但没有成功。
【问题讨论】:
好的,经过几个小时的搜索和调试,我得到了question 的答案。
问题:
所以,如果你不想重命名路由或资产文件夹,你需要做的就是替换
location / {
try_files $uri $uri/ /index.php?$query_string;
# ^^^^^
}
用这个:
location / {
try_files $uri /index.php?$query_string;
}
如果您可以在不进行任何重构的情况下重命名您的路由或资产文件夹,那么您可以在不修复 nginx 配置的情况下执行此操作。
希望这会有所帮助。
【讨论】:
vagrant reload
检查 vagrant box 中的 nginx 错误
"*1 FastCGI sent in stderr:"Unable to open primary script: /home/vagrant/code/public/index.php (No such file or directory)" "
Homestead.yaml 的变化
到 地图:homestead.app 到:/home/vagrant/code/Laravel/public
那么..
【讨论】:
配置 Nginx 站点:
网站: - 地图:homestead.test 到:/home/vagrant/project1/public
【讨论】:
我的解决方案是将主机文件中的地址移动到文件底部。它发生在我身上两次。
【讨论】:
在您的情况下,由于Homestead.yaml 中的 站点 配置不当,您会收到 nginx 403 disabled HTTP 响应,
如果您正确配置它,它应该可以工作。
如何逐步解决问题:
1) 转到您的 vagrant box 并创建 laraval 应用程序
$vagrant ssh
$cd ~/code
$#lets create basic blog
$laravel new blog
Crafting application...
Loading composer repositories with package information
........
$cd blog
$ll
# You should be able to see public folder in this dir.
# this is the entry point for your application.
# this is your public dir: ~/code/blog/public
# more explicitly: /home/vagrant/code/blog/public
$exit # exit ssh
2) 使用正确的站点信息更新 Homestead.yaml
- map: homestead.app
to: /home/vagrant/code/blog/public # should be same as in step1
3) 重新配置你的 vagrant
$vagrant reload --provision
您现在应该可以使用http://homestead.app 访问它了 谢谢!
【讨论】:
在您的浏览器中访问
homestead.app/public
在 /home/vagrant/Code/Laravel/public
中使用 composer 安装 laravel/laravel 之前【讨论】:
对于某些人来说,这可能就像将 git 克隆到现有的公共文件夹中一样简单,例如:
- map: hello-world.dev
to: /home/vagrant/Code/Laravel/public/hello-world
正确的文件夹结构是:
- map: hello-world.dev
to: /home/vagrant/Code/hello-world/public
另一个注意事项是忽略有关编辑主机文件的 laravel 文档,使用 git shell 或 cygwin (windows) 安装 vagrant hostsupdater,只需将主机和别名的条目添加到 ~/.homestead/Homestead.yaml 文件。
【讨论】:
以下是完整的解决方案步骤:
运行homestead edit
将 /public 添加到目录的末尾
sites:
- map: homestead.app
to: /full/path/to/the/laravel-app/public
homestead halt && homestead up --provision
【讨论】:
就我而言,出于测试目的,我在 public 目录中只有 phpinfo.php 文件。服务器一直显示 403 错误,直到我将一个名为 index.php 的文件放入公用文件夹!
【讨论】:
我遇到了同样的问题,对我来说,原因是在 Homestead.yaml 文件中,我错误地输入了这个:
sites:
- map: homestead.app
to: /home/vagrant/Code
而不是正确的语法:
sites:
- map: homestead.app
to: /home/vagrant/Code/path/to/public
【讨论】:
此响应的另一个原因可能是使用公共目录中的文件夹复制您的路由。例如,您的 /public 目录中可能有 homestead.app/lists GET 路由和 lists 文件夹。这将导致相同的 403 错误(服务器将假定您正在尝试访问 /public/lists 目录而不是您的 /lists 路由)。
【讨论】:
RewriteCond %{REQUEST_FILENAME} !-d 中禁用此规则,因为从不允许目录列表。刚刚这样做,似乎工作正常
更改 Nginx 的配置
将该行放在“位置/”部分:
try_files $uri $uri/public/index.php?$query_string;
如果它不起作用,则将您的“public”替换为包含“index.php”的文件夹名称,
这对我使用 ServerPilot 非常有用,
祝你好运!
【讨论】:
我一直在努力解决同样的问题,我只是为我的案例解决了这个问题。
我确定我已正确设置了 yaml 文件,但我不断收到 403 错误,并且在尝试某些路由时,我收到“未指定输入文件”。
我的解决方案来自http://laravel.com/docs/4.2/homestead,它涉及使用 serve 命令。我没有添加任何其他网站,只是想尽一切办法让第一个网站运行。
SSH 进入我的 vagrant box 并使用命令“serve my_app_name.app /home/vagrant/Code/path/to/public”完成了这项工作。请注意,我已经在我的主机文件中为这个应用添加了一个条目。
希望这对某人有所帮助。
【讨论】:
我在尝试手动创建第一个网站时遇到了这个问题。 @GregD 的回答帮助我发现了问题!如果您使用内置功能,Vagrant/Homestead/Laravel 通常会让一切顺利运行。
Homestead 的配置文件为一个站点预配置,位于/Code/Laravel/。启动并运行此测试平台的一些步骤:
vagrant up 并通过 ssh 连接到您的虚拟机(如果您的机器上还没有终端,Chrome Secure Shell 非常好)cd ~/Code laravel new Laravel。 这将创建您的第一个具有适当权限的网站。您可以在此权限之后对未来的站点进行建模,或者仅使用Homestead.yaml 和laravel new <site> 的“站点”节点来构建未来的新站点。
【讨论】:
我建议检查 nginx 日志 - 使用 sudo tail /var/log/nginx/homestead.app-error.log
【讨论】: