以前開發PHP一直用AppServ,後來發現還有比AppServ更好的整合開發工具-Xampp:apache+mysql + php+perl整合,
xampp(apache+mysql+php+perl)是一個功能強大的php網站開發整合軟體包。應用xampp可以輕鬆地在各種系統下搭建php等程式的運行環境。
下載網址:http://www.apachefriends.org/zh_tw/xampp.html
網上提供了各種平台的開發包,並且有詳細的安裝說明。
不過比較慘的是,遵循說明裝好後,出現了大問題,apache伺服器無法啟動。花了我整一天的時間又是google,又是baidu,千方尋藥。
最後竟然是xampp容器內部php與perl相互衝突。
查了一天的,也算有些收穫,下面我將apache伺服器無法啟動的原因跟大家分享一下,以免以後諸如此類的問題浪費大家的時間:
1。連接埠衝突
Xampp中Apache無法啟動的解決方案簡單的就是修改80和443連接埠。在啟動XAMPP時,如果報80/443連接埠被占,可以修改此軟體的連接埠
開啟xampp/apache/conf/httpd.conf檔案把80修改為8081;開啟xampp/apache/conf/extra/httpd-ssl.conf檔案把443修改為4433或者關閉SSL擴充(反正是調試而已)
2.網路設定問題
現將整理後的解決方案公布如下:
在案頭右鍵網路位置–>點擊“屬性”–>開啟“網路連接”視窗–>在“本地串連”按右鍵“屬性”–>開啟“本地串連屬性”對話方塊–>在“常規”選項卡下的“此串連使用下列項目(o):”內雙擊“Internet協議(TCP/IP)”–>開啟 “Internet協議(TCP/IP)屬性”對話方塊–>點擊右下腳的“進階(V)…”按鈕–>開啟“進階TCP/IP設定”對話方塊 –>單擊“WINS”選項卡–>選中“禁用TCP/IP上的NetBIOS(s)”。–>一直點擊“確定”按鈕即可。
另外:要注意了,咱們上網用的Dr.COM 用戶端是跟Apache有些衝突的(具體我也不知道)。如果你在啟動了Dr.COM用戶端的情況下啟動Apache這時還會出現上述錯誤。一定要關掉 Dr.COM用戶端。這時應該就可以正常啟動Apache伺服器了。
如果每次手動啟動apache 時總是提示:本機電腦上的Apache服務啟動後又停止了,一些服務自動停止,如果他們沒什麼可做的例如”日誌和警報”服務 。
解決方案如下:
在網路連接屬性裡選
tcp/ip屬性–> 進階–>wins標籤—>下面有啟用LMHOSTS查詢,及netbios的選項
改為禁用,工作管理員裡立刻就可以看到apache進程cpu迅速下降(不再嘗試開子進程)
經測試暫時還沒有問題
觀察中
似乎問題和上面的沒有關係
可能還和tcpip.sys這個檔案有關係
特別是xp sp2系統
除了上面兩個外
極端方法是關掉apache的日誌
怎麼樣關閉apache2的記錄檔(logfile)?這是個問題,因為寫日誌會給系統帶來很大的損耗。關閉日誌以後,甚至最高可以提高整體效能近40%(粗數量級估計)那麼如何關閉日誌呢?
可以通過降低log層級的辦法來減少日誌讀寫。
這裡要提醒的是,這麼做將給“入侵檢測”以及其他基於日誌分析的工作帶來麻煩。所以請謹慎使用。
LogLevel用於調整記於錯誤記錄檔中的資訊的詳細程度。(參閱ErrorLog指令)。可以選擇下列層級,依照重要性降序排列:
Level Description Example
emerg 緊急 – 系統無法使用。 “Child cannot open lock file. Exiting”
alert 必須立即採取措施。 “getpwuid: couldn’t determine user name from uid”
crit 致命情況。 “socket: Failed to get a socket, exiting child”
error 錯誤情況。 “Premature end of script headers”
warn 警告情況。 “child process 1234 did not exit, sending another SIGHUP”
notice 一般重要情況。 “httpd: caught SIGBUS, attempting to dump core in …”
info 普通訊息。 “Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)…”
debug 出錯層級資訊 “Opening config file …”
通常情況建議使用 crit 到 warn 之間的設定
(三)
上面的方法雖然解決了Apache的問題,可是這樣會出現偶爾上不了網的現象。經過多天的資料搜尋,終於找到了一個較為完美的解決方案了,方法如下:
網路位置->;查看網路連接->本地串連(你正在使用的那個串連,一般是這個名字)->;右鍵點它選”屬性”->;選中”internet協議(TCP/IP)
->; 屬性->;進階->;切換到”wins”標籤->點擊”匯入LMhosts(M)” 然後選擇你安裝 apache目錄下的bin檔案夾(我安裝的目錄是D://AppServ//Apache2.2//bin) 匯入httpd.exe後就可以開啟Apache 也可以上網了
3.
遇到系統升級到Winxp[sp2]可能會遇到Apache無法正常啟動:
error.log日誌類似這樣描述:
[crit] (OS 10022)提供了一個無效的參數。
解決辦法:
1.網路位置->本地串連->屬性->internet協議(TCP/IP)->屬性->進階->wins標籤->去掉啟用LMhosts查詢前的勾.
2.控制面版->windows防火牆->進階標籤->本地串連設定->服務的標籤裡勾選安全Web伺服器(HTTPS)即可.
(這上下兩項完成後仍然有問題,選中:啟用 TCI/IP 上的 NetBOIS.
這是網上的辦法,我試過後問題依舊,繼續找。下面的操作就可以了。
3.在運行裡輸入:netsh winsock reset
原因:有人提到是winsock的問題,用hijackthis.exe 搜尋了下,發現了:
於是找了WinsockxpFix.exe嘗試修複winsock,
重啟後? apache就可以啟動了
後來發現,機子不重啟也可以的,只要修複一下網路連接就可以了
其實Windows本身就帶有修複工具的 汗一個
只要直接在運行裡輸入:
netsh winsock reset
連提示重啟都不用, 很好很強大!
4.xampp容器內部衝突
開啟xampp control panel,點擊setup,選中disable mod_perl即可解決衝突問題。google了老半天,這個方法還是在一個英文網站上找到的,正好解決了我的問題。