我正在努力實作的目標
在開發 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 會產生相同的結果。
- Connecting to the site using the internal WSL IP address, found using
hostname -Iand replacing localhost with this IP (still on port 8000). This is an adequate workaround to use my app, however I am unable to interact with my database via MySQL Workbench without having to set up a new connection, therefore a fix where I can use localhost would be very helpful! - (Based off comments) Only ran
symfony serve -dwithout starting apache and PHP services separately - still sometimes allows connections to localhost but sometimes doesn't work.
Conclusion
The behaviour is odd as it works sometimes but other times it doesn't when the exact same steps are carried out. I am unsure where else to look for answers and I can't seem to find anything online with this same problem. Please let me know if any config files, etc would be helpful. Thank you so much for your help! :)
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/qiye/359542.html
標籤:windows apache symfony localhost wsl-2
上一篇:陣列中連續數字的總和
