我正在努力實作的目標
在開發 Symfony Web 應用程式期間從我的本地機器訪問 localhost。
我的環境
- 在 Windows 10 上運行的 WSL2
- Linux、Apache2、MySQL、PHP-7.4 堆疊(安裝了 Xdebug3)
- Debian 10
- Symfony 5.4(雖然不確定是否與此問題相關)
我采取的步驟
- 根據此Microsoft WSL2 教程設定WSL2
- 根據此Digital Ocean 教程設定 LAMP 堆疊
- 根據這個Symfony 教程設定Symfony
- 在啟動時運行以下 bash 腳本以啟動我的服務并將主機設定為我的 xdebug.ini 檔案中的虛擬 WSL IP
#!/bin/sh
REMOTEIP=`cat /etc/resolv.conf | grep nameserver | sed 's/nameserver\s//'`
sed -i -E "s/client_host=[0-9\.] /client_host=$REMOTEIP/g" /etc/php/7.4/mods-available/xdebug.ini
service php7.4-fpm start
service apache2 start
service mysql start
- 在開發服務器上運行我的 Symfony 專案
symfony serve -d(Symfony 然后告訴我“Web 服務器正在使用 PHP FPM 7.4.23 https://127.0.0.1:8000”) - 在運行應用程式的 Chrome 中訪問 https://localhost:8000/
我期望發生的事情
- 當我在 Chrome 瀏覽器中訪問 URL 時,我的 Symfony Web 應用程式將在 https://localhost:8000/ 上運行
實際發生的事情
- 我收到“無法訪問此站點本地主機拒絕連接。” 在 Chrome 瀏覽器中
我試過的
- 這種情況過去很少發生,我會讓我的筆記本電腦重新啟動,重復上述程序,然后我可以通過 https://localhost:8000/ 進行連接。但是,它現在拒絕更頻繁地連接(例如我當天啟動的 8/10 次)
- 連接到https://127.0.0.1:8000 會產生相同的結果。
- 使用內部 WSL IP 地址連接到站點,發現使用
hostname -I此 IP 并將其替換為 localhost(仍在埠 8000 上)。這是使用我的應用程式的適當解決方法,但是我無法通過 MySQL Workbench 與我的資料庫進行互動而無需設定新連接,因此修復我可以使用 localhost 的方法將非常有幫助! - (基于評論)僅在
symfony serve -d沒有單獨啟動 apache 和 PHP 服務的情況下運行- 有時仍然允許連接到本地主機,但有時不起作用。
結論
這種行為很奇怪,因為它有時會起作用,但有時在執行完全相同的步驟時卻不起作用。我不確定在哪里可以找到答案,而且我似乎無法在網上找到任何有關相同問題的資訊。請讓我知道是否有任何組態檔等會有所幫助。非常感謝你的幫助!:)
uj5u.com熱心網友回復:
當它正常作業時,正如您清楚地知道的那樣,WSL2 的“本地主機轉發”功能意味著您可以使用 Windows 主機的“本地主機”地址訪問在 WSL2 內運行的服務。
然而,有時該功能會失效。眾所周知,當您執行以下任一操作時會發生這種情況:
- 休眠
- 啟用 Windows“快速啟動”功能(這是默認設定)。快速啟動是一種會觸發相同問題的偽休眠。
通常最好的解決方案是禁用休眠和快速啟動。但是,如果您確實需要這些功能,您可以通過以下方式重置 WSL localhost 功能:
- 退出任何 WSL 實體
- 發行
wsl --shutdown - 重啟你的實體
根據我的經驗,本地主機轉發將在此之后作業。
uj5u.com熱心網友回復:
嘗試運行命令netstat -nltp。它顯示活動地址和埠。您的 nginx 行程應該在 0.0.0.0:8000 運行。0.0.0.0 表示 nginx 行程在任何地方都可用。
如果您的 nginx 行程由任何特定的 ip 地址運行,您應該通過該 ip 地址訪問它,例如http://192.168.4.2:8000。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363507.html
