[英]Laravel Homestead: 403 forbidden on nginx
我只是按照他們的說明安裝了 Laravel Homestead。 當我打開http://homestead.app:8000 時,我得到了 nginx 403 forbidden HTTP Response。
我嘗試將應用程序/存儲權限設置為 755,但這不起作用,所以我重新加載了 Vagrant。 沒有進一步的結果。
我也嘗試更改 nginx 配置,但沒有成功。
我遇到了同樣的問題,對我來說,原因是在 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
路由)。
在處理同樣的問題時,我一直在用頭撞牆,而我剛剛為我的案例解決了這個問題。
我確信我已經正確設置了 yaml 文件,但我一直收到 403 錯誤,並且在嘗試某些路由時,我收到“未指定輸入文件”。
我的解決方案來自http://laravel.com/docs/4.2/homestead ,它涉及使用 serve 命令。 我沒有添加任何額外的站點,只是想盡一切辦法讓第一個站點運行。
SSH 進入我的流浪箱並使用命令“serve my_app_name.app /home/vagrant/Code/path/to/public”完成了這項工作。 請注意,我已經在我的主機文件中為這個應用程序添加了一個條目。
希望這可以幫助某人。
OK,我得到答案的問題,搜索和調試的幾個小時后。
問題:
所以,如果你不想重命名路由或資產文件夾,你需要做的就是替換
location / {
try_files $uri $uri/ /index.php?$query_string;
# ^^^^^
}
有了這個:
location / {
try_files $uri /index.php?$query_string;
}
如果您可以在不進行任何重構的情況下重命名您的路由或資產文件夾,那么您可以在不修復 nginx 配置的情況下執行此操作。
希望這會有所幫助。
對於某些人來說,這可能就像在現有公共文件夾中克隆 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 文件。
我建議檢查 nginx 日志 - 使用sudo tail /var/log/nginx/homestead.app-error.log
以下是完整的解決步驟:
運行homestead edit
將/public
添加到目錄的末尾
sites: - map: homestead.app to: /full/path/to/the/laravel-app/public
homestead halt && homestead up --provision
更改 Nginx 的配置
將該行放在“位置/”部分:
try_files $uri $uri/public/index.php?$query_string;
如果它不起作用,則將您的“public”替換為包含“index.php”的文件夾名稱,
使用 ServerPilot 對我來說效果很好,
祝你好運!。
就我而言,出於測試目的,我在公共目錄中只有 phpinfo.php 文件。 服務器一直顯示 403 錯誤,直到我將名為index.php的文件放入公共文件夾!
在您的情況下,由於Homestead.yaml
的站點配置不當,您會收到nginx 403 forbidden HTTP Response,如果配置正確,它應該可以工作。
如何逐步解決問題:
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 reload --provision
您現在應該可以使用http://homestead.app訪問它了 謝謝!
在瀏覽器中訪問
homestead.app/public
在/home/vagrant/Code/Laravel/public 中使用 composer 安裝 laravel/laravel 之前
配置 Nginx 站點:
站點: - 地圖:homestead.test 到:/home/vagrant/project1/public
當我嘗試手動創建我的第一個網站時遇到了這個問題。 @GregD 的回答幫助我發現了問題! 如果您使用內置功能,Vagrant/Homestead/Laravel 通常會讓一切都自己順利運行。
Homestead 的配置文件是為一個站點預先配置的,位於/Code/Laravel/
。 啟動並運行此測試台的一些步驟:
vagrant up
並通過 ssh 連接到您的虛擬機(如果您的機器上還沒有終端, Chrome Secure Shell非常棒)cd ~/Code
laravel new Laravel
。 這將創建您的第一個具有適當權限的站點。 您可以根據此權限對未來的站點進行建模,或者僅使用Homestead.yaml
的“站點”節點和laravel new <site>
來創建新站點。
我的解決方案是將主機文件中的地址移動到文件底部。 它發生在我身上兩次。
在你的 vagrant 框中檢查 nginx 錯誤
"*1 FastCGI 在 stderr 中發送:"無法打開主腳本:/home/vagrant/code/public/index.php (No such file or directory)" "
Homestead.yaml 中的更改
映射:homestead.app 到:/home/vagrant/code/Laravel/public
然后..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.