1. 程式人生 > >PHPStudy無法啟動Apache和MySQL(Window環境)

PHPStudy無法啟動Apache和MySQL(Window環境)

PHPStudy無法啟動Apache和MySQL

 PHPStudy是一款國產、小巧、方便的伺服器軟體整合環境,我覺得對於PHP初學者來說,最難的是PHP、Apache(Nginx或IIS)、MySQL環境的配置,尤其是在Window環境下(比起類Unix環境,Win環境配置各種開發環境簡直反人類)。雖然網上很多人會推薦之間一開始學就在命令列下直接手動配置各個開發環境,但是我覺得除非是有一定伺服器開發環境配置基礎的人,否則一開始使用像PHPStudy或XAMPP這樣的整合環境會更加合適,可以集中精力放在PHP或MySQL本身而不是在環境配置上花大量的時間(同時也會很挫敗初學者的信心),等到有一定經驗之後再慢慢學習各個環境的配置會更加合適。

在這裡我更加推薦PHPStudy,首先它的功能更加強大(比起XAMPP),對於各種環境再次配置十分方便(我現在有時偷懶也會直接使用phpstudy),同時支援中文介面,對初學者十分友好;

在使用PHPStudy時,有時候會遇到如下的情況,啟動Apache和MySQL之後,會返回啟動失敗的提示,返回資訊大概會有以下:

Apache 已經啟動...

MySQL 已經啟動...

Apache 已經停止...

MySQL 已經停止...

情況大概如圖:


導致這樣的原因有很多,可以按照如下的方式排查問題:

1、沒有向系統服務註冊Apache,MySQL服務;

解決方式:

開啟win服務面板,可以在cmd控制檯中輸入:services.msc 打開面板;

在【拓展】面板中查詢是否存在Apache,MySQL的相關服務,如果沒有註冊相關服務,有一種簡單的方式可以註冊該服務;

以管理員許可權執行phpstudy,執行【其他選單選項 / 服務管理器 / Apache / 安裝服務】和 【其他選單選項 / 服務管理器 / MySQL / 安裝服務】操作;


2、Apache或MySQL預設埠被佔用

解決方式:

一般phpstudy中的Apache預設埠為80,MySQL預設埠為3306;

可以通過cmd控制檯輸入指令:netstat -ano 檢視這些埠的使用情況,如果這些埠已經被其他程式佔用,修改Apache和MySQL埠的方式有2種,之後要重啟Apache和MySQL:

1)方式一:通過修改配置檔案:

修改Apache埠:在phpstudy中開啟【其他選單選項 / 開啟配置檔案 / httpd-conf】開啟Apache配置檔案,修改如下欄位,將原來的 Listen 80 修改為 Listen 8088 或其他埠;

修改MySQL埠:在phpstudy中開啟【其他選單選項 / 開啟配置檔案 / mysql-ini】開啟Mysql配置檔案,修改如下欄位,將port 3306修改為其他埠;


2)方式二:通過phpstudy提供的常規埠設定:

開啟phpstudy中【其他選單選項 / php設定 / 埠常規設定】,修改相應的埠,並重新啟動Apache和MySQL;

3. 在以上兩種排查都沒有問題,或者執行了以上2中操作後仍然無法啟動Apache和MySQL,在確保系統服務中已經註冊Apache和MySQL,以及這兩個軟體的埠沒有被佔用的情況下,可以按照如下2種方式去啟動服務:

1)方式一:通過控制檯啟動服務;

以管理員身份開啟PHPstudy(否者許可權不足會返回系統錯誤5),輸入以下指令:

net start Apache2a

net start MySQLa

注意:這裡的 Apache2a、MySQLa 是Apache和MySQL在系統服務中註冊的名稱(在不同的機器可能註冊名不同),可以通過系統服務列表查詢獲得;

2)方式二:使用phpstudy提供的強制啟動埠服務;

在PHPstudy開啟【其他選單選項 / 環境埠檢測 / 環境埠檢測】,開啟如下視窗,先後點選【檢測埠】,【嘗試關閉相關程序並啟動】;

一般來說,phpstudy無法啟動Apache和MySQL服務的情況使用以上3種方式就可以解決了,注意在執行以上排查時,前提條件是本地已經不存在的Apache和Mysql服務,如果之前已經裝過相應的整合環境,最好先解除安裝乾淨(其實視情況有時並不需要,但是我也不是很清楚其他整合環境的服務註冊機制,以防萬一還是解除安裝乾淨比較保險),特別注意的是,一定要在系統服務先中解除安裝Apache和MySQL服務,具體步驟如下:

1)在cmd控制檯中執行 services.msc ,開啟服務面板,獲取Apache和MySQL的系統註冊名(比如查到 Apache2a,MySQLa);

2)在cmd控制檯中執行以下指令刪除相關服務:

sc delete Apache2a

sc delete MySQLa