PHP環境配置:Windows7+IIS7+PHP+MySQL
配置需求
第一步:安裝 IIS
注意:從IIS 7+PHP 5.5版本開始,Windows下PHP環境的配置完全不一樣,相比之前版本的安裝更快更輕鬆,配合FastCGI,只需滑鼠簡單操作一下就可以執行PHP環境。
1.找到”控制面板 => 程式和功能 => 開啟或關閉Windows功能“
預設”Internet 資訊服務“打勾安裝
直接選擇CGI,會自動安裝FastCGI,不需要再安裝ISAPI
2.新建網站目錄
執行->inetmgr
右擊”網站=>新增網站“
新增網站資訊,一定按圖片所示設定,除了路徑自選
彈出”80端口占用“,意味著你將會有另一個網站【Default Web Site】同時佔用80埠,解決辦法:
- 點選取消,返回修改埠,重新確定。
- 點選確定,每次使用時,關閉其中一個網站
第二步:安裝 PHP
下載地址: ofollow,noindex">http://windows.php.net/download/
官網可以下載到Windows版的最新PHP包,但是PHP.net已經放棄5.6版以前的環境包,大叔這裡整理了一份以前的環境包列表,有需要的同學可以自己去拿
百度雲盤: https://pan.baidu.com/s/1BJgFhrCHRBj1VFkgGegZ8g
訪問密碼: 11mh
將PHP環境包解壓後,找到php.ini-xxx檔案
既然是本地開發測試,大叔建議:複製”php.ini-development“ 並貼上,重新命名為php.ini
php.ini-development php.ini-dist |
( 5.5版以後名稱 ) ( 5.5版以前 名稱 ) |
擁有較低的安全性設定,對許可權設定適合開發程式使用 |
php.ini-production php.ini-recommended |
( 5.5版以後名稱 ) ( 5.5版以前 名稱 ) |
擁有較高的安全性設定,則適合正式上線的伺服器中使用 |
配置 php.ini
1.設定extension_dir外掛
搜尋並找到extension_dir = "",在""裡面輸入PHP外掛ext目錄所在的位置,extension_dir = "C:/ProgramFiles/XXX/XXX/php目錄名/ext"
搜尋並找到extension_dir=,會找到外掛目錄列表,大叔建議開啟以下外掛(去掉前面”;“)維持大部分的PHP網站功能,如果有其他需求再開啟其他外掛( 注:配置一次PHP.ini就需要重啟一次IIS )
外掛名 | 外掛功能 |
---|---|
extension=php_bz2.dll | 壓縮外掛 |
extension=php_curl.dll | 遠端貼上 |
extension=php_gd2.dll | GD庫 |
extension=php_mbstring.dll | 短標籤 |
extension=php_mysql.dll | MySQL老引擎 |
extension=php_mysqli.dll | MySQL新引擎 |
extension=php_pdo_mysql.dll | MySQLPDO連線 |
2.設定時區:date.timezone =Asia/Shanghai
3.IIS 新增 PHP 支援
執行->inetmgr
開啟:處理程式對映
開啟:新增模組對映
填寫如下內容
確定會有提示,點選”確定“
對映程式新增成功,列表中會有一條PHP程式對映記錄
這樣一個 IIS+PHP 環境就搭建好了。
PHP包:版本/型號區別
- 5.5版本之前
Windows配置IIS+PHP,需要安裝VC9
Windows配置Apache+PHP,需要安裝VC6 - 5.5版本之後只有VCXX了,只要選執行緒方式和32位/64位系統就可以了
Non Thread Safe是指非執行緒安全,Thread Safe則是指執行緒安全
使用ISAPI的方式來執行PHP就必須用Thread Safe(執行緒安全)的版本
使用FastCGI模式執行PHP的話就沒有必要用執行緒安全檢查了,用None Thread Safe(NTS,非執行緒安全)的版本能夠更好的提高效率
FastCGI 程序錯誤彙總
錯誤1:php-cgi.exe - FastCGI 程序意外退出
開啟 http://localhost 頁面,提示以上錯誤,95%以上就是環境對應的VC版本沒裝對。
你需要尋找PHP VC號對應的Visual C++ Redistributable for Visual Studio開發版本:
VC號 | VS對應版本號 |
---|---|
VC6 | VC6.0 |
VC7 | VS2002 |
VC7.1 | VS2003 |
VC8 | VS2005 |
VC9 | VS2008 |
VC10 | VS2010 |
VC11 | VS2012 |
VC12 | VS2013 |
VC13 | VS2014 |
VC14 | VS2015 |
5.5版本需要安裝 VS2012
5.7版本需要安裝 VS2015
錯誤2:發生未知 FastCGI 錯誤錯誤程式碼為0x8007010b
如果之前的安裝嚴格按照本文所述,那應該考慮許可權問題,是否把PHP、Apache、MySQL程式放置在了C盤的嚴控許可權位置(比如 桌面 )。
將程式資料夾新增人員【 Everyone 】,許可權為【所有】,重新重新整理頁面即可。
第三步:安裝 MySQL
下載地址: https://dev.mysql.com/downloads/mysql/
百度雲盤: https://pan.baidu.com/s/19ffxCVYgTUbmMzNwI8CB6g
訪問密碼:l5fb
大叔建議使用免安裝版,使用CMD方式安裝,是最容易熟悉MySQL的方法,本文的安裝流程是以綠色版為標準。
百度網盤是本文配套的MySQL 5.7 官方免安裝版
進入官網下載頁面,拖至最下面,或在頁面搜尋 Other Downloads:
32位系統下載: Windows (x86, 32-bit), ZIP Archive
64位系統下載: Windows (x86, 64-bit), ZIP Archive
配置 my.ini
【 my.ini 】是MySQL安裝使用的核心檔案,安裝與使用都需要靠他來引導。
將檔案下載後解壓,複製 my--default.ini 複製並重命名為 my.ini (新版的好像都不再帶 my--default.ini ,所以自己在根目錄下建一個 my.ini )
1.設定MySQL安裝路徑
在 my.ini 中,一定要存在下面的字元,如果不存在,就自己碼進去,然後儲存,
[mysqld] #skip-grant-tables #這名加上可以跳過驗證 basedir= C:/User/Administrator/XXX/XXX/mysql-noinstall-5.1.53-win32 #根目錄 #datadir=C:/User/Administrator/XXX/XXX/mysql-noinstall-5.1.53-win32/data #資料檔案存放目錄
2.人工安裝 MySQL
開啟 CMD 控制檯
通過 CMD 的 cd 命令,進入MySQL的根目錄下的 bin資料夾
在 bin資料夾 下分別輸入下面三條指令:
mysqld --install MySQL回車(成功會提示,S開頭字母) mysqld -remove回車(如果安裝位置出錯,就用這個命令刪除配置,然後重新安裝。) net start mysql回車(成功會提示服務已經執行)
如果安裝成功,就可以通過 CMD 命令,輕鬆開啟/關閉 MySQL 了
注意:儲存【my.ini】時編碼一定設為Ansi,否則會報如下錯誤
error: Found option without preceding group in config file: D:\Program Files\mysql-5.6.25-winx64\my.ini at line: 1 Fatal error in defaults handling. Program aborted。
這時,你在 CMD 中執行 net start mysql 命令,恭喜,你進入了MySQL的的卡死迴圈狀態中。
錯誤提示解決方案彙總
1.服務無法啟動
C:XXX>mysql>bin>net start mysql
MySQL 服務正在啟動 ....
MySQL 服務無法啟動。
服務沒有報告任何錯誤。
請鍵入 NET HELPMSG 3534 以獲得更多的幫助。
解決方案: 【MySQL】服務無法啟動,服務沒有報告任何錯誤的解決辦法
2.新安裝MySQL,Root空密碼無法登入
MySQL> mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決方案: 【MySQL】免安裝版安裝並啟動成功後,無法登入,root帳戶密碼強制重設
第四步:設定偽靜態
1.下載 IIS 7 的 Microsoft URL 重寫模組 2.0 模板
官網64位: http://www.microsoft.com/zh-cn/download/details.aspx?id=7435
官網32位: http://www.microsoft.com/zh-cn/download/details.aspx?id=5747
IIS URL Rewrite下載地址: http://www.iis.net/download/URLRewrite
2.設定web.config
<rewrite> <rules> <rule name="Rewrite to index.php" stopProcessing="true"> <match url="^index.html" /> <action type="Rewrite" url="index.php" /> </rule> <rule name="Rewrite to article.php" stopProcessing="true"> <match url="^article_(d+).html" /> <action type="Rewrite" url="article.php?id={R:1}" /> </rule> <rule name="Rewrite to list.php" stopProcessing="true"> <match url="^list_(d+)_(d+).html" /> <action type="Rewrite" url="list.php?id={R:1}&page={R:2}" /> </rule> <rule name="Rewrite to category.php" stopProcessing="true"> <match url="^(.*)" /> <action type="Rewrite" url="category.php?category={R:1}" /> </rule> </rules> </rewrite>
其他問題
問題1:File upload error - unable to create a temporary file in Unknown on line 0
原因:因為PHP的臨時目錄為不可讀寫
解決方案:
- 開啟 php.ini 找到 upload_tmp_dir
- 找一個位置為php上傳臨時目錄,然後 upload_tmp_dir = "D://upload/"
問題2:PHP Notice: Undefined variable
原因:PHP預設的配置會報這個錯誤,雖然有利於發現錯誤,但同時實踐中會出現很多問題。
解決方法:
方法1:修改 php.ini 配置檔案 error_reporting 設定:
- 找到 error_reporting = E_ALL
- 修改為 error_reporting = E_ALL & ~E_NOTICE
原理:減弱PHP的敏感程度,使其遇到這種問題不報錯。(不推薦這種方式,會導致你錯誤的語法繼續出錯)
方法2:在PHP檔案頭部加入以下程式碼
<?php ini_set("error_reporting","E_ALL & ~E_NOTICE"); ?>
同樣也可以解決問題,但同樣不推薦,這個方法。
方法3:修正你的語法,讓你的程式碼更規範!!!
附錄
Windows 2008 R2 IIS角色安裝方法
Windows 2008 R2是伺服器版本,所以安裝IIS7時和非伺服器版有些不同,需要使用角色系統安裝
第一步:安裝IIS
首先進入”控制面板=>開啟或關閉Windows功能“
伺服器版本進入的是 伺服器管理器 ,我們需要進入【 角色 】並新增角色來增加IIS功能
進入引導頁,點選”下一步“
打勾”Web 伺服器(IIS)“,點選下一步
一路下一步,記得把 CGI 勾選上,不要勾選 ISAPI
等待安裝過程
最後顯示”安裝成功 “,即大功告成。
Windows 10:MySQL my.ini 與 Windows7 不通用
Windows 7/8/10/2008R2 都使用了IIS7,使用及安裝的方法幾乎一致,但因為微軟的老毛病,系統不同的情況下,Bug也會不同,這裡大叔記錄了一些安裝其他系統時遇到一些情況記錄。
MySQL的 my.ini 檔案,各個系統之間不能通用,所以在安裝時,無法直接把Windows7的MySQL直接移植過去,大叔就重寫了 my.ini 就可以正常使用了。
[WinMySQLAdmin] Server="C:/Users/Administrator/***/***/***/mysql-5.7.16/bin/mysqld.exe" [client] no-beep # pipe # socket=mysql port=3306 [mysql] default-character-set=utf8 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] explicit_defaults_for_timestamp = TRUE # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 2G # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. #basedir="C:\mysql-5.7.11-win32\" basedir = "C:\Users\Administrator\***\***\***\mysql-5.7.16\" #datadir="C:\mysql-5.7.11-win32\data\" datadir = "C:\Users\Administrator\***\***\***\mysql-5.7.16\data\" port=3306 server_id=1 general-log=0 general_log_file="mysql_general.log" slow-query-log=1 slow_query_log_file="mysql_slow_query.log" long_query_time=10 log-error="mysql_error_log.err" default-storage-engine=INNODB max_connections=1024 query_cache_size=128M key_buffer_size=128M innodb_flush_log_at_trx_commit=1 innodb_thread_concurrency=128 innodb_autoextend_increment=128M tmp_table_size=128M # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" character-set-server=utf8 innodb_flush_method=normal