问题描述
假设在windows上输入如下命令:
E:mywampapache2.2bin>E:mywampnginx-1.6.2nginx.exe -s reload
那么输入结果就是这样的:
nginx: [alert] could not open error log file: CreateFile() 'logs/error.log' failed (3: The system cannot find the path specified)2015/01/26 22:07:10 [emerg] 5164#5196: CreateFile() 'E:mywampapache2.2bin/conf/nginx.conf' failed (3: The system cannot find the path specified)
解决方法就是首先cd到目录E:mywampapache2.2bin>E:mywampnginx-1.6.2,然后运行nginx -s reload,感觉这样太麻烦了,求教有没有更简单的方法。
问题解答
回答1:nginx的-c选项可以指定配置文件的路径,所以,你可以试试,在配置文件里面指定日志文件的时候指定为绝对路径,比如E:mywampnginx-1.6.2logsaccess.log(防止日志打开日志文件错误),然后执行nginx reload的时候使用配置文件的绝对路径:
shellE:mywampnginx-1.6.2nginx.exe -s reload -c E:mywampnginx-1.6.2confnginx.conf
不过,好像上面还有问题,都是路径方面的问题,nginx对当前路径的依赖太大。
那么就想办法在执行nginx命令前重新设定当前目录吧,Windows下的话可以用start命令,/D参数指定起始目录,这样就行。所以像这样就行了start /D E:mywampnginx-1.6.2 nginx -s reload
回答2:首先,既然选用nginx就不要在windows下使用,效率比在Linux下差很多。
其次,这个文件打不开的原因显然是默认相对路径不认,去修改nginx.conf文件,调整access_log的路径地址。
最后,建议nginx这个命令直接加入到环境变量,在Linux下也一样意见这么做,参考Java配置环境变量
回答3:加上参数-p指定路径完美解决不谢E:mywampapache2.2bin>E:mywampnginx-1.6.2nginx.exe -p E:mywampnginx-1.6.2 -s reload
回答4:不把 Nginx 加入 path,在你的任何一个自己的 path 下创建一个 nginx.cmd 文件:
@set nginx_path=D:LocalNginx@echo offpushd %nginx_path%if '%*' == '' ( start /b %nginx_path%nginx.exe) else ( call %nginx_path%nginx.exe %*)popd
今天突然想到的解决方法,虽然这问题已经两年了(https://gist.github.com/hyrio...