各位版上的高手們好,最近系統遇到了一個問題,需要向各位高手請教...
(OS:Centos 7)
原本的伺服器就是一個IP對多個Domain(二個網站,四個Domain對一個IP),再透過Apache去做指向,對應到該顯示的頁面,當時有設定httpd.conf及vhost.conf
最近要新增一個網站,但是我在vhost.conf裡面,依照原有設定增加新網站virtualhost後,重啟apache會出現無法重啟的問題。
網站資料夾的權限、擁有者以及群組都已前面二個網站的設定去設,但還是無法解決此問題。
請求各位大神協助,感激不盡~~~
journal log 裡面已經把問題寫得很清楚了:
你的 vhost.conf 第一行指令有文法錯誤 (Syntax error on line 1 of)
文法錯是因為你的 #NameVirtualHost 前面還藏了三個奇怪字元: \xef\xbb\xbf, 所以 Apache 看不懂....
要看詳細完整的 log 請用此指令:
journalctl -x -u httpd
是的,但是我是依照原本已存在在裡面設好的網站,複製格式,然後新增修改裡面的DOMAIN及對應資料夾,會有上述的錯誤。設定上一模一樣(因為是複製),只要多加了一個VirtualHost就會錯誤。
journalctl -x -u httpd後,出現的跟systemctl status httpd.service的錯誤訊息一樣。
目前還是無解@@
不要以為複製就一定不會出問題, 如果你的編輯器會自動把 ASCII 內容轉成 Unicode 存檔, 在畫面上是看不出來的, 但是讀檔就會出錯....即使你沒有動手去改過這行字, 但是編輯器可能白目, 自己偷改了...
錯誤訊息已經很明確地指出:
vhost.conf 第一行前面出現三個不應該存在的字元 (\xef\xbb\xbf)
我們就不要去想別的事情, 先專注在: 如何解決掉這個問題?...
從這三個字元的內碼看來, 在螢幕上應該是不會被顯示出來的, 所以你從畫面上看不到他....可是又必須將這三個字元刪掉, 才能讓 apache 正常讀取....
如果看不見字元, 編輯器要怎麼刪?
就把她整行砍掉, 自己用鍵盤重打所有的字, 不要用複製貼上的....
(我猜你可能不是用 vi 編輯, 因為 vi 裡面應該看得到這三個字)
順便講一下:
\xef\xbb\xbf 這三個字, 正好是 UTF-8 BOM 的開頭, 所以我才會猜: 你的編輯器自己偷偷在第一行幫你把純 ASCII 轉成了 Unicode...
程式設計雜筆: BOM (Byte Order Mark) 與 UTF-8
Wiki: UTF-8 Byte order mark
所以, 萬一你刪掉重打, 還是會出現這三個字的話, 那就要去改你的編輯器了 (猜: 你是用 Windows 的編輯器改內容的? 因為近幾年只剩下 Windows 會擅自加 BOM 進去), 把他的 UTF-8 BOM 設定拿掉, 改成只有 UTF-8 或是 ASCII 就好....(改用 vi 編輯比較快啦...)
bom頭怎麼去除
感謝大神協助,目前問題已排除,也已可正常轉向,感激不盡。