为什么我的PHP不能在Windows 10上使用NginX自动启动?

时间:2017-06-29 06:21:20

标签: php windows nginx

我正在运行 Windows 10 的新安装。我需要为PHP创建一个本地测试环境。我之前在Ubuntu Linux上设置和运行NginX / PHP服务器,但从未在Windows上运行。我已经为Windows安装了NginX和PHP二进制文件。

在我启动并登录后,如果我转到C:\nginx并运行nginx.exe,Nginx服务器启动并运行正常,我得到了#34;欢迎到NginX"屏幕http://127.0.0.1

然后,如果我cd到C:\nginx\php并运行php-cgi.exe -b 127.0.0.1:9000 -c c:/nginx/php/php.ini,PHP服务器就会运行,我可以访问http://127.0.0.1/php.info并获得php_info();的输出。所以似乎一切都安装好了。

我现在的目标是在启动计算机时让PHP服务器自动启动。我下载了Non-Sucking Service Manager,并在Administraror模式下打开了一个命令提示符,并运行了nssm edit nginx。我按如下方式填写了屏幕:

nssm nginx application

nssm nginx details

然后我为PHP做了同样的事情:

nssm php application

nssm php details

然而,虽然NginX似乎是在启动时启动,但PHP却没有。启动后,无需在命令行手动启动任何内容,我得到NginX欢迎屏幕。但是,如果我尝试查看PHP信息页面,我会收到以下消息:

  

无法连接

     

Firefox无法在127.0.0.1建立与服务器的连接。

如何让PHP在启动时自动启动?

这是我的nginx.conf文件:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        text/html;
    sendfile            on;
    keepalive_timeout   65;

    server {

        #Uncomment and edit the line below if you want to use a custom domainname
        #server_name    your.domain.com;

        listen          80;
        root            c:/nginx/html;

    location ~ .php$ {
        root html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME c:/nginx/html/$fastcgi_script_name;
        include fastcgi_params;
    }
    }
}

1 个答案:

答案 0 :(得分:1)

您的nginx.conf似乎没问题。

  

......但是,虽然NginX似乎是在启动时开始......

我不相信NGINX欢迎页面,它很可能来自缓存。除非nssm启动了nginx进程,否则我也不信任服务状态Running

在我的测试中,nginx和php服务都没有正确启动。

我需要为这两项服务设置AppNoConsole=1才能使它们正常工作。

According to the author(s)这是Windows 10 Creators Update的已知问题。

  

2017-04-26:Windows 10 Creators Update的用户应该使用prelease   构建2.2.4-101以避免服务无法启动的问题。如果   由于某种原因,你不能使用你也可以设置的构建   注册表中的AppNoConsole = 1,注意到期望的应用程序   控制台窗口可能会出现意外行为。

您可以通过NSSM Service Editor GUI > Process > Console window更改此设置。只需清除该复选框,然后单击编辑服务。已经完成了。

也可以使用命令完成相同的操作。

net stop php
net stop nginx

nssm set php AppNoConsole 1
nssm set nginx AppNoConsole 1

net start nginx
net start php