PHP
下載
選擇適合你的版本下載文搂,我的是64位線程安全的。
解壓秤朗。
修改配置
接下來將php.ini-production文件重命名為php.ini煤蹭,修改設(shè)置。
; On windows:
extension_dir = "ext"
;apache不識別php-ini中的相對路徑,最好寫上絕對路徑
extension_dir = "E:\study-environment\php\ext"
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_fileinfo.dll
extension=php_ftp.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
#指定站點路徑
查找”doc_root”硝皂,修改為doc_root = "E:\study-environment\www"
加入環(huán)境變量
把php加入環(huán)境變量:
Control Panel\All Control Panel Items\System----->Advanced system settings----->Environment Variables----->System variables----->Path
添加php的安裝路徑常挚,如:
E:\study-environment\php
Apache
下載
注意:在Windows上,確保PHP(5.5以上)與Apache(2.4)可以協(xié)同運作的唯一方法是Apache和PHP都是32位(x86)或64位(x64) )和Apache和PHP都是線程安全(TS)稽物。 使用非線程安全(NTS)不適用奄毡,并且線程安全版本捆綁了所需的Apache模塊PHP“php7apache2_4.dll”。 NTS版本沒有這個模塊贝或。
還要注意檢查它們是否都使用相同版本的Visual Studio(例如VC14)進行編譯吼过。
修改配置
下載完后,解壓,找到conf/httpd.conf,進行配置咪奖。
Define SRVROOT "/Apache24"
ServerRoot "${SRVROOT}"
改為
Define SRVROOT "E:\study-environment\Apache" ##你的安裝目錄
ServerRoot "${SRVROOT}"
#修改端口的配置
#Listen 12.34.56.78:80
Listen 80
ServerName localhost:80
#設(shè)置php7module
#查找”LoadModule”那先,新增行,輸入加載的php模塊信息
LoadModule php7_module "E:\study-environment\php\php7apache2_4.dll"
#修改默認(rèn)站點
#DocumentRoot "${SRVROOT}/htdocs"
#<Directory "${SRVROOT}/htdocs">
DocumentRoot "E:\study-environment\www"
<Directory "E:\study-environment\www">
#查找”AddType”赡艰,新增行售淡,輸入允許執(zhí)行php的文件類型
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
#查找”DirectoryIndex”,更改默認(rèn)首頁為
DirectoryIndex index.php index.html
#注意使用英文字符,使用中文字符會解析出錯
保存慷垮,win+x打開命令提示符(管理員)(以管理員方式運行)揖闸,定位到bin目錄,安裝Apache:httpd -k install
啟動
Apache常見命令操作
#Start Apache
httpd -k start
#Stop Apache
httpd -k stop
#Restart Apache
httpd -k restart
#Uninstall Apache Service
httpd -k uninstall
#Test Config Syntax
httpd -t
#Version Details
httpd -V
#Command Line Options List
httpd -h
啟動時可能會發(fā)生錯誤料身。
(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted. : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0:
443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
這是因為443端口被占用了汤纸,服務(wù)啟動不了,有兩個解決方法
方法一
可以在conf/extra/httpd.conf查找 Include
如果找到
#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-ahssl.conf
說明 https 應(yīng)用的配置文件是conf/extra/httpd-ahssl.conf
打開該文件芹血,修改https端口
Listen 443 https
方法二
1.查看所有的端口占用情況
C:\>netstat -ano
2.查看指定端口的占用情況
C:\>netstat -aon|findstr "443"
協(xié)議 本地地址 外部地址 狀態(tài) PID
TCP 127.0.0.1:443 0.0.0.0:0 LISTENING 2016
端口被進程號為2016的進程占用贮泞,繼續(xù)執(zhí)行下面命令: (也可以去任務(wù)管理器中查看pid對應(yīng)的進程)
3.查看PID對應(yīng)的進程
C:\>tasklist|findstr "2016"
映像名稱 PID 會話名 會話# 內(nèi)存使用
========================= ======== ================
tor.exe 2016 Console 0 16,064 K
tor進程占用了443端口。
4.結(jié)束該進程
C:\>taskkill /f /t /im tor.exe
測試
啟動了Apache后幔烛,在站點文件”E:\study-environment\www”內(nèi)新建文件”index.php”啃擦,添加:
<?php
phpinfo();
?>
重啟Apache,在瀏覽器訪問apache配置的端口饿悬。
后續(xù)配置
apach配置多個端口令蛉。
在httpd.conf中設(shè)置監(jiān)聽多個端口。
Listen 8000
Listen 8099
Listen 8077
啟用httpd-vhosts.conf設(shè)置狡恬。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
注意珠叔,在http.conf中設(shè)置的DocumentRoot,在httpd-vhosts.conf配置的所有的虛擬目錄都應(yīng)該在這個目錄之下設(shè)置弟劲。
比如我的DocumentRoot
DocumentRoot "E:\study-environment\www"
然后在httpd-vhosts.conf中配置目錄和地址:
#NameVirtualHost *:8099 //2.4已棄用
<VirtualHost *:8099 >
ServerName 0.0.0.0:8099
DocumentRoot "E:\study-environment\www\8099"
</VirtualHost>
#NameVirtualHost *:8077 //2.4已棄用
<VirtualHost *:8077>
ServerName localhost:8077
DocumentRoot "E:\study-environment\www\8077"
</VirtualHost>
新建index.php訪問測試
Mysql
下載
直接安裝祷安,設(shè)置root密碼。
配置php數(shù)據(jù)庫模塊
php_mysql由于安全問題被棄用了兔乞,可以用php_mysqli和php_pdo_mysql代替
詳見這里汇鞭。
5.x開始撇眯,PHP連接MYSQL無論使用哪種方式都是使用的mysqlnd驅(qū)動。包括mysql_*虱咧、pdo_mysql熊榛、mysqli。
mysqlnd和mysql/mysqli/pdo_mysql關(guān)系打比方說 mysqlnd是金屬腕巡,而mysql mysqli pdo_mysql只是金屬制品玄坦。
例:使用PDO連接mysql
$pdo = new PDO('mysql:host=localhost;dbname=database_name;port=3306','用戶名','密碼');
$pdo->exec('set names utf8');
$stmt = $pdo->prepare("select * from table where id =:id");
$stmt->bindValue(':id',1,PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$rows = $pdo->query("select * from table where id = 1")->fetchAll(PDO::FETCH_ASSOC);