最近换工作又用回了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下的路径就行。