最近換工作又用回了windows。在windows平台下php和nginx 沒有Linux下直接用包管理工具來的方便,就准備在wsl下安裝nginx和php,然后文件放在d:\\webroot下運行。當中遇到了一些小問題:
1.nginx沒有監聽80端口。
問題描述:通過 service nginx start能運行nginx程序,但是在netstat -a中並沒有找到80端口被監聽(wsl與主機的端口和地址是通的)。
解決方法:nginx.conf中include的是sites-enable下的文件,而我把文件都放在sites-available下,軟鏈接一下就行。
2. too many levels of symbolic links
問題描述:上述問題解決后重啟nginx,報too many levels of symbolic links這個錯。
解決方法:原因是鏈接的時候我用了相對地址。要用以下格式: ln -s /etc/nginx/sites-available/xxx.conf /etc/nginx/sites-enable/
3.FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream
問題描述:這個是之前nginx第一個問題沒解決的時候,我下了個windows下的nginx。nginx正常跑起來了,然后php這里不行,看log顯示這個問題。這個是由於路徑的問題導致的錯誤。windows下路徑為 d:\\webroot,而在wsl下訪問應該是 mnt\d\webroot。我在nginx的配置中server下的root 和 location ~/.php 下的SCRIPT_FILENAME都使用了windows下的路徑,這里當我們訪問nginx時,nginx檢測到是php文件然后把d:\\webroot\index.php轉交給了wsl下的php去處理,wsl下這個路徑是錯的,因此發生問題。
解決方法:把SCRIPT_FILENAME單獨改成wsl下的路徑就行。