首頁  >  問答  >  主體

nginx在windows命令列下重啟報錯的問題

假設在windows上輸入以下指令:

E:\mywamp\apache2.2\bin>E:\mywamp\nginx-1.6.2\nginx.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:\mywamp\apache2.2\bin/conf/nginx.conf" failed (3: The system cannot find the path specified)

解決方法就是先cd到目錄E:\mywamp\apache2.2\bin>E:\mywamp\nginx-1.6.2\,然後執行nginx -s reload,感覺這樣太麻煩了,求教有沒有更簡單的方法。

漂亮男人漂亮男人2712 天前1196

全部回覆(4)我來回復

  • 滿天的星座

    滿天的星座2017-05-16 17:27:26

    nginx的-c選項可以指定設定檔的路徑,所以,你可以試試,在設定檔裡面指定日誌檔的時候指定為絕對路徑,例如E:mywampnginx-1.6.2logsaccess.log(防止日誌開啟日誌檔錯誤),然後執行nginx reload的時候使用設定檔的絕對路徑:

    shellE:\mywamp\nginx-1.6.2\nginx.exe -s reload -c E:\mywamp\nginx-1.6.2\conf\nginx.conf
    

    不過,好像上面還有問題,都是路徑方面的問題,nginx對目前路徑的依賴太大。

    那麼就想辦法在執行nginx指令前重新設定目前目錄吧,Windows下的話可以用start指令,/D參數指定起始目錄,這樣就行。所以像這樣就行了start /D E:mywampnginx-1.6.2 nginx -s reload

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 17:27:26

    首先,既然選用nginx就不要在windows下使用,效率比在Linux下差很多。

    其次,這個文件打不開的原因顯然是預設相對路徑不認,去修改nginx.conf文件,調整access_log的路徑位址。

    最後,建議nginx這個指令直接加入到環境變量,在Linux下也一樣意見這麼做,參考Java配置環境變數

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 17:27:26

    加上參數-p指定路徑完美解決不謝
    E:mywampapache2.2bin>E:mywampnginx-1.6.2nginx.exe -p E:mywampnginx-1.6.2 -s reload

    回覆
    0
  • 迷茫

    迷茫2017-05-16 17:27:26

    不把 Nginx 加入 path,在你的任何一個自己的 path 下建立一個 nginx.cmd 檔案:

    @set nginx_path=D:\Local\Nginx
    @echo off
    pushd %nginx_path%
    if "%*" == "" (
      start /b %nginx_path%\nginx.exe
    ) else (
      call %nginx_path%\nginx.exe %*
    )
    popd

    今天突然想到的解決方法,雖然這問題已經兩年了(
    https://gist.github.com/hyrio...

    回覆
    0
  • 取消回覆