PHP 安裝

PHP 安裝


如何下載Apache,php,mysql

下載Apache

圖片

打開網址:http://httpd.apache.org/。php

點擊Download(http://httpd.apache.org/download.cgi#apache24)進入到詳細頁面。html

圖片

能夠看到這裏有源碼,二進制的版本,咱們選擇Windows版本。python

點擊後進入:http://httpd.apache.org/docs/current/platform/windows.html#downmysql

圖片

能夠看到官網已經作出說明,如今再也不提供編譯後的文件,只提供源碼。好吧用第三方的。laravel

咱們能夠從前三個網址下載相應版本,也可使用WampServer和XAMPP集成包。git

圖片

接下來就根據本身的系統選擇相應的版本,x86是32位系統,x64是64位系統。github

Apache是有環境依賴的,須要打上相應的VC運行庫,如VC14等。web

下載php

圖片

打開php官網的下載連接:http://php.net/downloads.php。面試

點擊Windows downloads進入下載頁面。redis

圖片

根據系統下載相應的版本,如64位則下載x64的版本。

若是是使用ISAPI的方式來運行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運行PHP的話就沒有必要用線程 安全檢查了,用None Thread Safe(NTS,非線程安全)的版本可以更好的提升效率。

下載mysql

圖片

從官網進入下載地址要多點幾下。

圖片

打開網址http://dev.mysql.com/downloads/mysql

點擊Download進行下載吧。

圖片

官網的速度仍是比較慢的,這裏就提供一個國內的鏡像吧。

打開鏡像網址:http://mirrors.sohu.com/mysql/

圖片

直接下載就能夠了,如:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.34-winx64.zip。

經常使用的國內鏡像站

搜狐開源鏡像站:http://mirrors.sohu.com/

網易開源鏡像站:http://mirrors.163.com/

開源中國:http://mirrors.oschina.net/

首都在線科技股份有限公司:http://mirrors.yun-idc.com/

阿里雲開源鏡像:http://mirrors.aliyun.com/

如何配置Apache,php,mysql

配置Apache

圖片

php是用C語言進行編譯的,若是沒有安裝VC相應的運行庫,提示內容會很奇怪。如「提示NET HELPMSG 3547」。

在語句填寫正確的狀況下,VC環境也是形成其報錯的緣由之一,切記。

VC庫對應的版本以下:

Visual C++ 2003 運行庫(VC7)

Visual C++ 2005 運行庫(VC8)

Visual C++ 2008 運行庫(VC9)

Visual C++ 2010 運行庫(VC10)

Visual C++ 2012 運行庫(VC11)

Visual C++ 2013 運行庫(VC12)

Visual C++ 2015 運行庫(VC14)

對http.conf(D:\phpEnv\Apache24\conf\http.conf)配置文件進行修改-使用記事本打開就行
httpd.conf的具體設置以下:
(1)修改ServerRoot Apache的根路徑: (37行) ServerRoot"c:/Apache24"改爲=>ServerRoot "D:/phpEnv/Apache24" (2)修改ServerName你的主機名稱: 若是此行不修改則啓動apache 提示Starting httpd: AH00558 (217行) ServerName www.example.com:80將前面的#去掉,該屬性在從命令行啓動Apache時須要用到。 (3)修改DocumentRoot Apache訪問的主文件夾目錄,就是php、html代碼文件的位置。 Apache默認的路徑是在htdocs(D:\phpEnv\Apache24\htdocs)下面,裏面會有個簡單的入口文件index.html。這個路徑能夠自 己進行修改,我這裏將其配置在我本身新建的文件夾www(D:\phpEnv\www)下。 (247行) DocumentRoot "c:/Apache24/htdocs" <Directory "c:/Apache24/htdocs"> 改成=> DocumentRoot "D:\phpEnv\www" <Directory "D:\phpEnv\www"> (4)修改入口文件配置:DirectoryIndex通常狀況下咱們都是以index.php、index.html、index.htm做爲web項目的入口。 Apache默認的入口只有index.html須要添加其餘兩個的支持,固然這個入口文件的設置能夠根據本身的須要增減,若是要求比較嚴 格的話能夠只寫一個index.php,這樣在項目裏面的入口就只能是index.php (274行) <IfModule dir_module> DirectoryIndex index.html </IfModule> 改成=> <IfModule dir_module> DirectoryIndex index.php index.htm index.html </IfModule> (5)設定serverscript的目錄: (358行) ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" 改成=> ScriptAlias /cgi-bin/ "D:/phpEnv/Apache24/cgi-bin" (6)設定虛擬目錄路徑,多站點爲上級目錄 (380行) <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options None Require all granted </Directory> 改成=> <Directory "D:/phpEnv/Apache24/cgi-bin"> AllowOverride None Options None Require all granted </Directory> 

註冊服務和啓動服務

將Apache解壓到C:\www\Apache24\,進入C:\www\Apache24\bin

圖片

配置Apache_錯誤解決辦法

查看apache錯誤日誌:目錄下的apache/logs/error.log

查看window系統日誌:個人電腦右鍵管理系統工具事件查看器應用程序日誌

在命令行中使用netstat -ano就能夠很清楚的看到本地80口占用程序PID記下PID而後打開任務管理器,在進程裏查找到PID所對應的進程

圖片

如上圖,則修改C:\www\Apache24\httpd.conf裏面的目錄路徑,將C: \Apache24更改成C:\www\Apache24。

圖片

到這裏單個Apache配置就已經完成。

配置PHP

將php-5.6.12-Win32-VC11-x86.zip解壓到目錄,而後在Apache24\conf\httpd.conf中進行配置:

Php的一些經常使用配置修改:(D:\phpEnv\php\php.ini)

時區的設置:date.timezone = Asia/Shanghai

錯誤報告等級:error_reporting = E_ALL這個在開發模式下能夠所有打開。

配置MYSQL

修改配置文件:C:\mysql\my.ini

注意:MySQL的管理員用戶名爲root,密碼默認爲空。

修改配置文件:打開php的配置文件php.ini(D:\phpEnv\php\php.ini)

1)PHP對擴展的支持(721行) #這裏須要注意一下,若是隻用ext作爲擴展路徑而不是全路徑,容易致使擴展路徑出錯。向httpd.exe傳相對路徑就會定們出錯。因此最好使用全路徑。 ; extension_dir = "ext",去掉前面的「;」,並改成extension_dir ="D:\phpEnv\php\ext"打開php的擴展支持,ext文件夾下有不少php的擴展支持.dll文件,感興趣的同窗能夠看一下。 (2)而後就是打開php的mysql擴展了 (87五、876行)去掉前面的「;」 extension=php_mysql.dll extension=php_mysqli.dll 固然也能夠打開881行的php_pdo_mysql.dll啓用php的pdo支持我通常都用這個。 

MYSQL修改root密碼

  • 方法1: 用SET PASSWORD命令
  • 方法2: 用mysqladmin
  • 方法3: 用UPDATE直接編輯user表
mysqladmin -u root password "newpass" 

方法1: 用SET PASSWORD命令

首先登陸MySQL。

格式:mysql> set password for 用戶名@localhost = password('新密碼');

例子:mysql> set password for root@localhost = password('123');

方法2:用mysqladmin

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接編輯user表

首先登陸MySQL。

mysql> use mysql;

mysql> update user set password=password('123') where user='root' and host='localhost';

mysql> flush privileges;

方法4:在忘記root密碼的時候,能夠這樣 以windows爲例:

  1. 關閉正在運行的MySQL服務。
  2. 打開DOS窗口,轉到mysql\bin目錄。
  3. 輸入mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啓動MySQL服務的時候跳過權限表認證。
  4. 再開一個DOS窗口(由於剛纔那個DOS窗口已經不能動了),轉到mysql\bin目錄。
  5. 輸入mysql回車,若是成功,將出現MySQL提示符 >。
  6. 鏈接權限數據庫: use mysql; 。
  7. 改密碼:update user set password=password("123") where user="root";(別忘了最後加分號) 。
  8. 刷新權限(必須步驟):flush privileges; 。
  9. 退出 quit。
  10. 註銷系統,再進入,使用用戶名root和剛纔設置的新密碼123登陸。

如何在本地配置兩個站點

讓Apache在啓動時能加載虛擬主機模塊。

打開Apache安裝目錄下conf/httpd.conf文件,找到下面兩行文字,把最前面的 # 號去掉,而後保存。

圖片

接着找到同一文件中的DocumentRoot和Directory,改成站點目錄的上一級目錄

例如站點放在 D:/Appserv/www/1 和 D:/Appserv/www/2,則改成如下形式

配置完成後便可打開Apache安裝目錄下/conf/extra/httpd-vhosts.conf文件,在最後添加以下:

DocumentRoot是文件放置路徑,ServerName是網站域名:

圖片

配置PHP+PhpStorm+xdebug

下載xdebug文件

http://xdebug.org/wizard.php

將phpinfo()的源代碼複製到文本框中,xdebug會提示如何配置和下載哪一個版本的xdebug。

所有下載地址:

http://www.xdebug.org/download.php

在xdebug官網會有許多安裝提示。其中可能會出現的問題有:

phpize沒有安裝:繼而又要安裝brew,再安裝autoconf可謂一波三折

圖片

解決相關組件不全的問題

問題描述
Mac系統升級到10.9(mavericks)時安裝php擴展,執行 phpize 提示以下錯誤: Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. 解決辦法 先安裝Homebrew: 若是如下連接失效的話,能夠到brew官網查看。http://brew.sh/ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 而後安裝 autoconf: brew install autoconf 

配置php.ini,在末尾加上

在xdebug官網上的配置,只可以正確配置好xdebug可是不能與phpstorm進行配置。在php.ini末尾加上以下代碼:
[xdebug]
zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so" xdebug.remote_enable = On xdebug.remote_handler = "dbgp" xdebug.remote_host = "localhost" xdebug.remote_port = 9000 xdebug.idekey = PHPSTROM [xdebug] zend_extension="php_xdebug-2.3.3-5.6-vc11.dll" xdebug.remote_enable = On xdebug.remote_handler = "dbgp" xdebug.remote_host = "localhost" xdebug.remote_port = 9000 xdebug.idekey = PHPSTORM 

圖片

zend_extension:若是使用相對路徑,必須檢查一下,php.ini中extension_dir是否爲絕對路徑。

Debug->Xdebug->Debug port:必須與php.ini文件中的xdebug.remote_port保持一致。

chrome的xdebug配置

在IDE key裏將其配置成「phpStorm」

項目地址:https://github.com/mac-cain13/xdebug-helper-for-chrome

包直接下載地址:https://clients2.google.com/service/update2/crx?response=redirect&prodversion=38.0&x=id%3Deadndfjplgieldj bigjakmdgkmoaaaoc%26installsource%3Dondemand%26uc

圖片

進入網址:http://yurl.sinaapp.com/crx.php

輸入包名:eadndfjplgieldjbigjakmdgkmoaaaoc

安裝:

圖片

打開chrome,輸入:chrome://extensions/

而後將extension_1_6_1.crx拖放到瀏覽器窗口。

phpStorm的相關配置

打開phpStorm,

進入File>Settings>PHP>Servers,這裏要填寫服務器端的相關信息,name填localhost,host填localhost,port填80,debugger選XDebug

進入File>Settings>PHP>Debug,看到XDebug選項卡,port填9000,其餘默認

進入File>Settings>PHP>Debug>DBGp Proxy,IDE key 填 phpStorm,host 填localhost,port 填80

點OK退出設置。

xdebug中其餘配置

在phpStorm裏打開監聽(電話按鈕)。

對apache進行重啓,如使用命令行:net stop apache24 & net start apache24;

查看xdebug是否正確配置:進入到php.exe目錄:執行php.exe -m能夠查看相關模塊。

圖片

#重啓apache sudo apachectl restart #修改php.ini權限 sudo chmod 0777 php.ini #編輯php.ini文件 sudo vi php.ini(修改i,退出:q,保存退出:wq) #對apache進行重啓,如使用命令行: net stop apache24 & net start apache24; 

在phpinfo()中進行驗證其是否安裝成功,若是不成功先檢查路徑,後檢查端口。

配置phpMyAdmin

進入官網下載壓縮包:https://www.phpmyadmin.net/

將phpMyAdmin解壓到虛擬目錄(www.1.com)

訪問phpMyAdmin:http://www.1.com/phpMyAdmin

要開啓插件extension=php_mbstring.dll

用戶名默認爲root,密碼爲空。設置密碼的方法:mysqladmin -u root password "newpass"

使用空密碼進入phpMyAdmin:

phpMyAdmin的配置文件爲根目錄下的:config.inc.php(將config.sample.inc.php複製更名可得。複製libraries/config.default.php亦可。)

修改:$cfg['Servers'][$i]['AllowNoPassword'] = true;便可。

MAC平臺補充

啓動Apache

打開終端(terminal)

進入到root目錄:sudo -i;sudo su。

運行」sudo apachectl start」,輸入root密碼,這樣就啓動了Apache。

默認虛擬目錄:/Library/WebServer/Documents/下。

經常使用命令行:

網址:http://httpd.apache.org/docs/2.4/programs/apachectl.html

sudo apachectl start
sudo apachectl stop
sudo apachectl restart

運行php

在終端中運行「sudo vi /etc/apache2/httpd.conf」。

找到「#LoadModule php5_module libexec/apache2/libphp5.so」,把#號去掉,保存(在命令行輸入:w)並退出vi(在命令行輸入:q)。

運行「sudo cp /etc/php.ini.default /etc/php.ini」,這樣就能夠運行sudo vi /etc/php.ini來編輯php.ini配置各類功能了。好比:

;經過下面兩項來調整PHP提交文件的最大值,如phpMyAdmin中導入數據的最大值
upload_max_filesize = 2M post_max_size = 8M ;經過display_errors來控制是否顯示PHP程序的報錯信息,這在調試PHP程序時很是有用 display_errors = Off ;增長mysql的支持: extension=php_mysql.dll 

運行「sudo apachectl restart」,重啓Apache,這樣PHP就能夠用了。

安裝Mysql

從5.7開始安裝的時候會默認生成密碼,必定要截圖記住密碼。

系統偏好設置->MySQL->Start MySQL Server就能夠開啓服務。

使用xampp

我的感受在Mac平臺下,本身安裝若是順利倒也簡單,但畢竟依賴太多,縱使你精通某一方面,但bug涉及的面太多。若是僅僅是配置個php+apache+mysql仍是很簡單的,系統自己就有php環境,若是要擴展一下那就......仍是算了吧,用集成環境也是一個不錯的選擇。

先到官網下載集合包:https://www.apachefriends.org

https://www.apachefriends.org/xampp-files/5.6.28/xampp-osx-5.6.28-1-installer.dmg

到Mac本地後,雙擊安裝吧!

其xampp的默認目錄爲:/Applications/xampp/

安裝xdebug

感受PHP都自帶了一個版本的xdebug通常狀況下不用本身去編譯, 好比說xampp的文件在/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so。

好了,借花獻佛,跳過了phpize等煩人的依賴。

在Mac下配置xampp+xdebug

下載XAMPP:https://www.apachefriends.org/xampp-files/5.6.28/xampp-osx-5.6.28-1-installer.dmg

安裝XAMPP:

圖片

圖片

配置文件在/Applications/XAMPP/xamppfiles/etc/目錄下面:

修改php.ini,httpd.conf,/extra/httpd-vhosts.conf

根據http://xdebug.org/wizard.php 作以下修改:

在php.ini增長xdebug支持:

在httpd.conf修改多站點支持,和虛擬目錄:

在/extra/httpd-vhosts.conf中配置域名轉向:

到此配置的就OK了,phpstorm的配置能夠參照windows的配置。

相關問題

如何將apache添加爲服務

httpd.exe -k install -n "Apache24" rem httpd.exe -k uninstall -n "Apache24" 

如何查看apache服務是否安裝成功

#rem 在findstr的參數/I有不分大小寫的做用 net start|findstr /I "apache" #使用資源管理器查看 開始-->運行-->services.msc-->肯定 

如何解決apache服務沒法正常安裝的問題

#首先肯定軟件32位和64位是否和本身的系統匹配 #安裝相應的Microsoft Visual C++ Redistributable 

如何解決端口被佔用的問題

#查看80端口是否被佔用: netstat -aon|findstr "80" #打開apache目錄下的conf/httpd.conf 修改"Listen 80"爲"Listen 8088" 

如何添加環境變量

#運行SystemPropertiesAdvanced.exe,系統屬性高級 #環境變量Path,末尾添加,分號結束 

如何改變服務器網站目錄

#打開文件/conf/httpd.conf #修改ServerRoot(服務器apache目錄) #修改DocumentRoot(網站目錄) 

相關環境

AppServ集成環境(Windows):http://www.appservnetwork.com

XAMPP集成環境(Windows,Linux,Mac):http://www.apachefriends.org

WAMP集成環境(64/32位Windows):http://http://www.wampserver.com/

PHP_環境配置_python腳本

# -*- coding: cp936 -*- #Writeby:Moments(衿華客) #Date:201701111954 import os import zipfile import shutil class Moments: def __init__(self): print("Hello Moments") pass #path:要解壓文件的路徑,dir_name:解壓到哪一個文件夾,dir_zip:只解壓壓縮包裏的某個文件夾,dir_rename:將解壓後的文件夾重命名 def unZip(self, path="", dir_name="", dir_zip=[], dir_rename=[]): if path == "": print("【ERROR:要解壓文件的路徑爲空】") return False if len(dir_rename) > 0 and os.path.exists(dir_rename[1]): print("【WARN:將解壓後的文件夾重命名,目標文件夾%s已經存在】" % dir_rename[1]) return False #解壓操做 file = zipfile.ZipFile(path, "r") for name in file.namelist(): #只解壓指定的文件夾 if len(dir_zip) > 0: for i in dir_zip: if i in name: file.extract(name, os.getcwd()+"/"+dir_name) else: file.extract(name, os.getcwd()+"/"+dir_name) #更名操做 if len(dir_rename) > 0: file_list = os.listdir(os.getcwd()) for name in file_list: if not os.path.isdir(name): continue if dir_rename[0] in name: os.rename(name, dir_rename[1]) break #只改第一個,防止多個問題 #析構提示 print("【SUCCEED:已解壓" + path + "到目錄" + dir_name + "】") #遍歷目錄,返回符合條件的路徑 def listDir(self, path=".", *argc): file_list = os.listdir(path) #遍歷路徑 flag_temp = True #哨兵 result = [] #返回值變量 for name in file_list: for argv in argc: if argv not in name: flag_temp = False break if flag_temp: result.append( os.path.abspath(name) ) else: flag_temp = True if len(result) > 0: print("【SUCCEED:找到符合條件的文件:%s】" % result) return result else: print("【ERROR:沒有找到條例條件的文件/文件夾】") return False #配置Apache,php,mysql def configPHP(self, APM_name=["Apache", "php", "mysql"]): #配置php config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[1] + "/php.ini" print("【PATH:配置%s】" % config_name) if os.path.exists(config_name): os.remove(config_name) f1 = open(config_name.replace("php.ini", "php.ini-production"), "r").readlines() f2 = open(config_name, "w") for line1 in f1: #這裏要用絕對路徑,否則會致使抓取到Apache\bin下的ext。 #包括xdebug在配置的時候也會出現目錄問題。 if '''extension_dir = "ext"''' in line1: line1 = '''extension_dir = "%s/ext"\n''' % (os.path.abspath(".").replace("\\", "/") + "/" + APM_name[1]) elif ''';extension=php_mysql.dll''' in line1: line1 = '''extension=php_mysql.dll\n''' elif ''';extension=php_mysqli.dll''' in line1: line1 = '''extension=php_mysqli.dll\n''' elif ''';extension=php_pdo_mysql.dll''' in line1: line1 = '''extension=php_pdo_mysql.dll\n''' elif ''';extension=php_gd2.dll''' in line1: line1 = '''extension=php_gd2.dll\n''' elif ''';extension=php_mbstring.dll''' in line1: line1 = '''extension=php_mbstring.dll''' else: pass f2.write(line1) f2.close() print("【SUCCEED:完成%s配置】" % APM_name[1]) def configMysql(self, APM_name=["Apache", "php", "mysql"]): #配置mysql config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[2] + "/my.ini" print("【PATH:配置%s】" % config_name) if os.path.exists(config_name): os.remove(config_name) f1 = open(config_name.replace("my.ini", "my-default.ini"), "r").readlines() f2 = open(config_name, "w") for line1 in f1: if "basedir" in line1: line1 = "basedir = %s\n" % (os.path.abspath(".").replace("\\","/") + "/" + APM_name[2]) elif "datadir" in line1: line1 = "datadir = %s\n" % (os.path.abspath(".").replace("\\","/") + "/" + APM_name[2] + "/data") elif "port" in line1: line1 = "port = 3306\n" else: pass f2.write(line1) f2.write("""# 服務端的編碼方式 character-set-server = utf8 [client] #客戶端編碼方式,最好和服務端保存一致 loose-default-character-set = utf8""") f2.close() print("【SUCCEED:完成%s配置】" % APM_name[2]) def configApache(self, APM_name=["Apache", "php", "mysql"]): #配置Apache config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[0] + "/conf/httpd.conf" print("【PATH:配置%s】" % config_name) if not os.path.exists(config_name.replace("httpd.conf", "httpd.conf.bak")): shutil.copy(config_name, config_name.replace("httpd.conf", "httpd.conf.bak")) if os.path.exists(config_name): os.remove(config_name) f1 = open(config_name.replace("httpd.conf", "httpd.conf.bak"), "r").readlines() f2 = open(config_name, "w") for line1 in f1: #更改默認目錄 if "c:/Apache24" in line1: line1 = line1.replace("c:/Apache24", os.path.abspath(".").replace("\\", "/")+"/"+APM_name[0]) #添加默認主頁支持 elif '''DirectoryIndex index.html''' in line1: line1 = line1.replace('''DirectoryIndex index.html''', '''DirectoryIndex index.html, index.php''') #添加支持php5 elif '''<IfModule unixd_module>''' in line1: line1 = '''# php5 support LoadModule php5_module "%s/%s/php5apache2_4.dll" AddHandler application/x-httpd-php .php AddType application/x-httpd-php .html .htm # configure the path to php.ini PHPIniDir "%s/%s" ''' % (os.path.abspath(".").replace("\\","/"), APM_name[1], os.path.abspath(".").replace("\\","/"), APM_name[1]) + line1 else: pass f2.write(line1) f2.close() if not os.path.exists(os.path.abspath(".").replace("\\","/") + "/" + APM_name[1] + "/php5apache2_4.dll"): print("【ERROR:沒有找到php5所需文件!%s,請手動更改.】" % os.path.abspath(".").replace("\\","/")+"/php/php5apache2_4.dll") else: print("【SUCCEED:完成%s配置】" % APM_name[0]) #從新註冊並啓動服務 def netRestart(self, APM_name=["Apache", "php", "mysql"]): if len(APM_name) >= 1: #卸載Apache服務 s = os.path.abspath(".").replace("\\","/") + "/" + APM_name[0] + '/bin/httpd.exe -k uninstall -n "%s"' % APM_name[0] #結束全部httpdf.exe進程 s = s + " & " + "taskkill /F /IM httpd.exe /T" #註冊Apache服務 s = s + " & " + os.path.abspath(".").replace("\\","/") + "/" + APM_name[0] + '/bin/httpd.exe -k install -n "%s"' % APM_name[0] if len(APM_name) >= 3: #卸載mysql服務 s = s + " & " + os.path.abspath(".").replace("\\","/") + "/" + APM_name[2] + "/bin/mysqld.exe --remove " + APM_name[2] #註冊mysql服務 s = s + " & " + os.path.abspath(".").replace("\\","/") + "/" + APM_name[2] + "/bin/mysqld.exe --install " + APM_name[2] if len(APM_name) >= 1: #從新啓動服務 s = s + " & " + "net stop %s & net start %s" % (APM_name[0], APM_name[0]) if len(APM_name) >= 3: #從新啓動服務 s = s + " & " + "net stop %s & net start %s" % (APM_name[2], APM_name[2]) #暫停幾秒鐘 s = s + " & ping localhost -n 3 > nul" #執行以上語句 print("【PATH:%s】" % s) try: os.system(s) except Exception as e: print("【ERROR:%s】" % e) if len(APM_name) >= 1: print("【SUCCEED:%s註冊服務和啓動服務完成!】" % (APM_name[0])) if len(APM_name) >= 3: print("【SUCCEED:%s註冊服務和啓動服務完成!】" % (APM_name[2])) #刪除Apache服務和mysql服務 def netDel(self, APM_name=["Apache", "php", "mysql"]): if len(APM_name) >= 1: #卸載Apache服務 s = os.path.abspath(".").replace("\\","/") + "/" + APM_name[0] + '/bin/httpd.exe -k uninstall -n "%s"' % APM_name[0] #結束全部httpdf.exe進程 s = s + " & " + "taskkill /F /IM httpd.exe /T" if len(APM_name) >= 3: #卸載mysql服務 s = s + " & " + os.path.abspath(".").replace("\\","/") + "/" + APM_name[2] + "/bin/mysqld.exe --remove " + APM_name[2] if len(APM_name) >= 1: #關閉Apache服務 s = s + " & " + "net stop %s" % (APM_name[0]) if len(APM_name) >= 3: #關閉Mysql服務 s = s + " & " + "net stop %s" % (APM_name[2]) #暫停幾秒鐘 #s = s + " & ping localhost -n 3 > nul" #執行以上語句 print("【PATH:%s】" % s) try: os.system(s) except Exception as e: print("【ERROR:%s】" % e) if len(APM_name) >= 1: print("【SUCCEED:刪除Apache服務,%s已經中止!】" % (APM_name[0])) if len(APM_name) >= 3: print("【SUCCEED:刪除mysql服務,%s已經中止!】" % (APM_name[2])) #配置Apache多站點 def multiConfig(self, APM_name=["Apache", "php", "mysql"], dir_multi = {"www_1_com":"www.1.com","www_2_com":"www.2.com"}): config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[0] + "/conf/httpd.conf" print("【PATH:配置多站點%s】" % config_name) f1 = open(config_name, "r").readlines() f2 = open(config_name, "w") for line1 in f1: #設置爲根目錄 line1 = line1.replace("%s/htdocs" % (os.path.abspath(".").replace("\\", "/") + "/" + APM_name[0]), os.path.abspath(".").replace("\\", "/")[:3]) #設置爲上級目錄 #line1 = line1.replace("%s/htdocs" % APM_name[0], "") if 'mod_vhost_alias.so' in line1: line1 = line1.replace("#","") elif 'httpd-vhosts.conf' in line1: line1 = line1.replace("#","") else: pass f2.write(line1) f2.close() config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[0] + "/conf/extra/httpd-vhosts.conf" print("【PATH:配置多站點%s】" % config_name) if not os.path.exists(config_name.replace("httpd-vhosts.conf", "httpd-vhosts.conf.bak")): shutil.copy(config_name, config_name.replace("httpd-vhosts.conf", "httpd-vhosts.conf.bak")) if os.path.exists(config_name): os.remove(config_name) f1 = open(config_name.replace("httpd-vhosts.conf", "httpd-vhosts.conf.bak"), "r").read() f2 = open(config_name, "a") f2.write(f1) if len(dir_multi) > 0: for k, v in dir_multi.items(): f2.write('''<VirtualHost *:80> DocumentRoot "%s%s" ServerName %s </VirtualHost> ''' % (os.path.abspath(".").replace("\\","/")[:3] + "/", k, v)) #根目錄 #(os.path.abspath(".").replace("\\","/") + "/", k, v)) #同級目錄 #目錄建立 #根目錄 if not os.path.exists(os.path.abspath(".").replace("\\","/")[:3]+"/"+k): os.mkdir(os.path.abspath(".").replace("\\","/")[:3]+"/"+k) #同級目錄 #if not os.path.exists(os.path.abspath(".").replace("\\","/")+"/"+k): # os.mkdir(os.path.abspath(".").replace("\\","/")+"/"+k) #修改HOSTS文件 try: f_hosts = open(os.environ['SYSTEMROOT']+"/System32/drivers/etc/hosts", "a") print("【PATH:配置%s】" % (os.environ['SYSTEMROOT']+"/System32/drivers/etc/hosts")) f_hosts.write("\n127.0.0.1 %s" % v) f_hosts.close() except Exception as e: print("【ERROR:沒有權限修改hosts文件,請手動修改。】") f2.close() print("【SUCCEED:完成%s多站點配置】" % APM_name[0]) #配置擴展xdebug def configXdebug(self, APM_name=["Apache", "php", "mysql"], xdebug_name=""): #配置php config_name = os.path.abspath(".").replace("\\", "/") + "/" + APM_name[1] + "/php.ini" print("【PATH:xdebug中配置%s】" % config_name) f2 = open(config_name, "a") f2.write(''' [xdebug] zend_extension="%s" xdebug.remote_enable = On xdebug.remote_handler = "dbgp" xdebug.remote_host = "localhost" xdebug.remote_port = 9000 xdebug.idekey = PHPSTORM ''' % (xdebug_name)) f2.close() print("【SUCCEED:完成%s配置】" % APM_name[1]) def step1(mo, APM_name = ["Apache", "php", "mysql"]): #刪除Apache服務和mysql服務 mo.netDel(APM_name) #path:要解壓文件的路徑,dir_name:解壓到哪一個文件夾,dir_zip:只解壓壓縮包裏的某個文件夾,dir_rename:將解壓後的文件夾重命名 try: if len(APM_name) >= 1: var_php = mo.listDir(".", "zip", "httpd") [mo.unZip(path, "", ["Apache24"], ["Apache24", APM_name[0]]) for path in var_php] except Exception as e: print("【ERROR:%s】" % e) try: if len(APM_name) >= 2: var_php = mo.listDir(".", "zip", "php") [mo.unZip(path, "php", [], ["php", APM_name[1]]) for path in var_php] except Exception as e: print("【ERROR:%s】" % e) try: if len(APM_name) >= 3: var_php = mo.listDir(".", "zip", "mysql") [mo.unZip(path, "", ["mysql"], ["mysql-5.6.26", APM_name[2]]) for path in var_php] except Exception as e: print("【ERROR:%s】" % e) def step2(mo, APM_name = ["Apache", "php", "mysql"]): #配置Apache,php,mysql for name in APM_name: if os.path.exists(name): print("【SUCCEED:找到文件夾 %s】" % name) else: print("【ERROR:沒有找到文件夾 %s】" % name) try: if len(APM_name) >= 2: mo.configPHP(APM_name) except Exception as e: print("【ERROR:%s】" % e) try: if len(APM_name) >= 1: mo.configMysql(["Apache", "php", "mysql"]) except Exception as e: print("【ERROR:%s】" % e) try: if len(APM_name) >= 1: mo.configApache(APM_name) except Exception as e: print("【ERROR:%s】" % e) def step3(mo, APM_name = ["Apache", "php", "mysql"], dir_multi = {"www_1_com":"www.1.com","www_2_com":"www.2.com"}): #配置Apache多站點 try: if len(APM_name) >= 1: mo.multiConfig(APM_name, dir_multi) except Exception as e: print("【ERROR:%s】" % e) def step4(mo, APM_name = ["Apache", "php", "mysql"], xdebug_name=""): file_list = os.listdir(".") for name in file_list: if xdebug_name in name and len(APM_name) >= 2: shutil.copy(name, APM_name[1]+"/ext") print("【SUCCEED:成功複製文件 %s 到目錄 %s】" % (name, APM_name[1]+"/ext")) mo.configXdebug(APM_name, name) def step9(mo, APM_name = ["Apache", "php", "mysql"]): #從新註冊並啓動服務 mo.netRestart(APM_name) #測試代碼 if __name__ == "__main__": mo = Moments() APM_name = ["Apache", "php", "mysql"] dir_multi = {"www.1.com":"www.1.com"} xdebug_name = "php_xdebug-2.5.0-5.6-vc11-x86_64.dll" step1(mo, APM_name) #解壓重命名 step2(mo, APM_name) #配置Apache,php,mysql step3(mo, APM_name, dir_multi) #配置Apache多站點 step4(mo, APM_name, xdebug_name) #配置xdebug step9(mo, APM_name) #從新註冊並啓動服務

 

 

 

 

衿華客

php 教程

  1. PHP簡介
  2. PHP安裝
  3. PHP語法
  4. PHP數據類型
  5. PHP變量
  6. PHP運算符
  7. PHP流程控制
  8. PHP函數
  9. PHP類與對象
  10. PHP字符串
  11. PHP正則表達示
  12. PHP文件
  13. PHP圖形圖像
  14. PHPXML
  15. PHP會話緩存
  16. PHP異常處理
  17. PHP數據庫
  18. PHP日期時間戳
  19. PHP代碼風格規範

server 環境

  1. ubuntu入門
  2. docker入門
  3. git入門
  4. iterm入門

frame 框架

  1. laravel入門
  2. dingo入門
  3. JWT入門
  4. Laravel框架關鍵技術解析
  5. laravel則修筆記
  6. rpc入門
  7. rabbitmq入門
  8. opencc多國語言
  9. laravel兄弟連筆記
  10. laravel進階

case 實例

  1. php面試題筆記
  2. python圖標提取
  3. 字幕亂碼問題
  4. 支付寶接口調用
  5. laravel開發筆記

db 數據庫

  1. elasticsearch入門
  2. 數據庫操做
  3. 數據庫設計
  4. redis入門

help

相關文章
相關標籤/搜索