標籤:
本文詳細介紹了在Windows8.1(X64)下使用Apache2.4.12-x64-vc11/php-5.6.7-Win32-VC11-x64/Mysql5.6.24/phpMyAdmin4.4.2搭建php開發環境。
第一步:下載安裝的檔案
1. 建議選擇無SSL功能的Apache版本來完成開發。
2. Windows下安裝MySQL就選擇.msi安裝包格式,雙擊根據嚮導安裝即可,簡單方便。
3. PHP我們選擇用Windows的.zip版本。從安全性和效能來說,都是zip版本的好,一般伺服器也都是安裝這個版本的。
不要下載NTS版本或VC9版本的,因為VC9是專門為IIS定製的,而VC6 是為Apache或其他WEB服務軟體提供的。
4. phpMyAdmin是以PHP為基礎的線上MySQL管理工具,在進行phpMyAdmin3 安裝時需要的PHP環境至少為PHP5.2,MySQL5 以上的版本,我們這裡都符合要求。
第二步:安裝檔案
1. 在要安裝的磁碟建一個檔案夾。為了管理方便我們在D盤的根目錄下建立一個WAMP檔案夾。 D:\WAMP(WAMP是 windows+apache+mysql+php的縮寫)。
2. 在WAMP檔案夾下建立一個WWW檔案夾,用來存放你的PHP網站程式。D:\WAMP\WWW。
3. 安裝Apache伺服器,把Apache伺服器安裝到 D:\WAMP\Apache 檔案夾。具體Apache安裝過程可以參考文檔 Apache安裝圖解。
4. 把下載的php-5.3.5-Win32-VC6-x86解壓到 D:\WAMP\PHP 檔案夾。
5. 安裝MySql資料庫,把MySQL安裝到 D:\WAMP\MySQL檔案夾。具體MySQL安裝過程可以參考文檔 MySQL安裝圖解。
6. 解壓phpMyAdmin-3.4.9-all-languages.zip,然後重新命名為phpMyAdmin,將其複製到PHP網站程式目錄。結果為 D:\WAMP\WWW\phpMyAdmin。
第三步:配置Apache
首先使用文本編輯工具(推薦 EditPlus )開啟 D:\WAMP\Apache\conf\httpd.conf 檔案,這個檔案是Apache的設定檔,下面幾步都是在修改這個檔案的內容。
要注意的是修改完 httpd.conf 檔案需重新啟動Apache服務,新設定才會生效。
1. 設定監聽連接埠
開啟 httpd.conf 檔案後,找到 Listen(大概在第46行),將它後面的數字改為8080,如下:
Listen 8080
這個參數用來設定Apache伺服器的監聽連接埠,一般預設為80。修改為8080 是為了避免和Windows 2003系統的IIS連接埠號碼衝突,如果你沒有啟用IIS,也可以使用預設的80連接埠號碼。
2. 讓Apache載入PHP模組
找到 #LoadModule vhost_alias_module modules/mod_vhost_alias.so (大概在第128行),在這行的後面添加以下內容:
Define PHPROOT "D:/Programs/WAPM/PHP"PHPIniDir "${PHPROOT}"#LoadModule vhost_alias_module modules/mod_vhost_alias.soLoadModule php5_module "${PHPROOT}/php5apache2_4.dll"AddType application/x-httpd-php .php
LoadModule php5_module "D:/WAMP/PHP/php5apache2_4.dll"
這句意思是以module方式載入PHP5模組。
AddType application/x-httpd-php .php
這句意思就是將.php副檔名的檔案作為php指令碼執行。你可以使用你喜歡的任何其他副檔名,如 .html、.php5 甚至是 .txt 來執行PHP。
PHPIniDir "D:/WAMP/PHP"
這句用來指定PHP的設定檔php.ini 所在的目錄。
如果是Apache 2 以module模組方式運行php5的話,就可以使用 PHPIniDir 指令。
3. 修改網站存放目錄
我們知道Apache預設的網站存放目錄為Apache安裝目錄下的htdocs檔案夾。當你更改網站存放目錄,就必須修改相應的Apache配置。
在設定檔 httpd.conf 中尋找 DocumentRoot(大概在182行),將其修改為指向網站目錄的正確檔案夾。我們這裡改為
DocumentRoot "D:/WAMP/www"<Directory "D:/WAMP/www">
同時,尋找 This should be changed to whatever you set DocumentRoot to(大概在207行),在它下面有行 <Directoy 預設的DocumentRoot >,將其修改為你自己配置的DocumentRoot 路徑。我們這裡修改為:
4. 修改目錄首頁檔案
在設定檔 httpd.conf 中尋找 DirectoryIndex index.html (大概在244行)將其修改成:
DirectoryIndex index.html index.htm index.php
DirectoryIndex 指的是當客戶瀏覽器訪問的路徑是一個目錄時,Apache預設執行的檔案。
以我們所修改的為例:當客戶瀏覽器訪問一個目錄時,Apache會去找該目錄下的index.html,如果沒有再找index.htm,還沒有再找 index.php。都找不到則預設顯示該目錄下的檔案清單。參考文檔:如果防止Apache顯示檔案清單
第四步:配置PHP
開啟PHP安裝目錄,即D:\WAMP\PHP,我們可以看到目錄下有兩個這樣的檔案 php.ini-development 和 php.ini-production,第一個是開發使用的設定檔,第二個是生產環境的配置,因為我們是在本機做開發,所以選擇前者。將 php.ini-development複製一份到同目錄下,並改名為 php.ini。這個php.ini 就是當前使用的設定檔,以下幾步都是在修改這個php.ini檔案的內容。要注意的是,修改php.ini檔案後需重新啟動Apache服務,新設定才會生效。
1. 指定PHP擴充庫的存放目錄
在Windows下PHP的擴充庫通常以 DLL 形式存放在PHP的ext目錄中。
使用文本工具開啟php.ini檔案,尋找extension_dir = "ext"(大概在809行),也就是在 On windows 下面那一行。把它前面的分號“;”去除掉,改為如下:
extension_dir = "D:/WAMP/PHP/ext"
extension_dir 表示PHP擴充庫的具體目錄,以便調用相應的DLL檔案。
2. 開啟相應的擴充庫
預設情況下許多PHP的擴充庫都是關閉的,比如預設PHP不支援串連Mysql資料庫,需開啟相應的擴充庫。
這裡我們開啟一些常用的擴充庫。
尋找 ; Windows Extensions(大概在941行),在它的下面是extension列表。
找到如下擴充:
;extension=php_curl.dll;extension=php_gd2.dll;extension=php_mbstring.dll;extension=php_exif.dll;extension=php_mysql.dll;extension=php_mysqli.dll;extension=php_pdo_mysql.dll;extension=php_pdo_odbc.dll;extension=php_sockets.dll;extension=php_xmlrpc.dll;extension=php_xsl.dll
把以上extension 前面的分號 “;” 去掉。如果你希望載入其它擴充模組,方法相同,只要去掉前面的分號即可。
提示1:重啟Apache提示 “unable to load dynamic library......php_curl.dll”,載入php_curl.dll錯誤。解決方案是拷貝 PHP 目錄下的 libeay32.dll 和 ssleay32.dll 到 windows 目錄或 windows/system32 目錄下,只要是系統 Path 環境變數裡包含的路徑就可以。如果不想拷貝,你也可以直接把 PHP 路徑放到系統 Path 環境變數裡。 右擊我的電腦=>屬性=>進階=>環境變數=>系統變數裡有個Path,雙擊開啟,把你的PHP路徑加個分號“;”再前面( ;D:\WAMP\PHP ),添加進去就OK了。重啟Apache不再提示該錯誤。
提示2:Exif 擴充是用來顯示圖片的 exif 資訊的,因為該擴充需要 mbstring.dll 支援,所以必須將 extension=php_exif.dll 這一行寫到extension=php_mbstring.dll 的後面。
提示3:如果PHP內建的擴充庫不能滿足你的需要,你可以去 pecl.php.net 尋找並下載你需要的庫。windows使用者可以去 pecl4win.php.net 或者 http://downloads.php.net/pierre/ 下載已經編譯好的DLL檔案,也可以去http://museum.php.net/php5/ 載PECL集合壓縮包。
提示4:很多人在找php_zip.dll,其實從php5.3開始已經整合了zip擴充,直接使用就行了。你可以用<?php phpinfo() ?> 找到zip擴充的說明。
3. 讓PHP支援短標籤
在 php.ini 設定檔尋找 short_open_tag = Off (大概在266行)把它修改成:
short_open_tag = On
讓其支援短標籤。
php的代碼一般包含在<?php .... ?>的標籤內,設定 short_open_tag = On 之後,可以寫成更簡潔的形式:<? .... ?>。
4. 配置PHP的Session功能
在使用session功能時,我們必須配置session檔案在伺服器上的儲存目錄。我們需要為session建立一個可讀寫的目錄,這個目錄最好獨立於網站目錄之外。
這裡把目錄上建在了D:\WAMP\sessiontmp,然後在 php.ini 設定檔中找 ;session.save_path = "/tmp" (大概在1467行),去掉前面的分號“;” ,改為如下:
session.save_path = "D:/WAMP/sessiontmp"
5. 配置PHP的檔案上傳功能
同session一樣,在使用PHP檔案上傳功能時,我們必須要指定一個臨時檔案夾以完成檔案上傳功能,否則檔案上傳功能會失敗。
我們建立一個可讀寫的目錄檔案夾 D:\WAMP\fileuploadtmp,然後在 php.ini 設定檔中找到 ;upload_tmp_dir = (大概875行),修改為:
upload_tmp_dir = "D:/WAMP/fileuploadtmp"
PHP預設上傳檔案大小不超過2M,要想上傳大於2M的檔案
php.ini中檔案上傳功能配置選項說明
用文本工具(推薦EditPlus)開啟php.ini 設定檔,尋找 File Uploads ,在這個地區有以下3個選項:
file_uploads = On
是否允許HTTP檔案上傳。預設值為On允許HTTP檔案上傳,此選項不能設定為Off。
upload_tmp_dir =
檔案上傳的臨時存放目錄。如果沒指定則PHP會使用系統預設的臨時目錄。該選項預設為空白,此選項在手動設定PHP運行環境時,也容易遺忘,如果不配置這個選項,檔案上傳功能就無法實現,你必須給這個選項賦值,比如upload_tmp_dir = "d:/fileuploadtmp" ,代表在D盤目錄下有一個fileuploadtmp目錄,並且給這目錄讀寫權限。
upload_max_filesize = 2M
上傳檔案的最大尺寸。這個選項預設值為2M,即檔案上傳的大小為2M,如果你想上傳一個50M的檔案,你必須設定 upload_max_filesize = 50M。
但是僅設定upload_max_filesize = 50M 還是無法實現大檔案的上傳功能,我們還必須修改php.ini檔案中的 post_max_size 選項。
繼續在 php.ini 中尋找 Data Handling ,在這個地區有1個選項:
post_max_size = 8M
指通過表單POST給PHP的所能接收的最大值,包括表單裡的所有值。預設為8M。如果POST資料超出限制,那麼$_POST和$_FILES將會為空白。
要上傳大檔案,你必須設定該選項值大於upload_max_filesize選項的值,例如你設定了upload_max_filesize = 50M ,這裡可以把post_max_size = 100M。
另外如果啟用了記憶體限制,那麼該值應當小於memory_limit 選項的值。
繼續在 php.ini 中尋找 Resource Limits ,在這個地區有3個選項:
max_execution_time = 30
每個PHP頁面啟動並執行最大時間值(單位秒),預設30秒。當我們上傳一個較大的檔案,例如50M的檔案,很可能要幾分鐘才能上傳完,但php預設頁面最久執行時間為30秒,超過30秒,該指令碼就停止執行,這就導致出現無法開啟網頁的情況。因此我們可以把值設定的較大些,如 max_execution_time = 600。 如果設定為0,則表示無時間限制。
max_input_time = 60
每個PHP指令碼解析請求資料所用的時間(單位秒),預設60秒。當我們上傳大檔案時,可以將這個值設定的較大些。 如果設定為0,則表示無時間限制。
memory_limit = 128M
這個選項用來設定單個PHP指令碼所能申請到的最大記憶體空間。這有助於防止寫得不好的指令碼消耗光伺服器上的可用記憶體。如果不需要任何記憶體上的限制將其設為 -1。
php5.2.0以前的版本預設8M; php.5.2.0版本預設為16M。php 5.2.0之後的版本預設為 128M;
php.ini 配置上傳檔案功能樣本
假設要上傳一個50M的大檔案。配置 php.ini 如下:
file_uploads = Onupload_tmp_dir = "d:/fileuploadtmp"upload_max_filesize = 50Mpost_max_size = 100Mmax_execution_time = 600max_input_time = 600memory_limit = 128M
提示:需要保持 memory_limit > post_max_size > upload_max_filesize
6. 設定時區
在 php.ini 設定檔尋找 ;date.timezone = (大概在993行),去掉前面的分號“;” 改為如下:
date.timezone = PRC
date.timezone是PHP5.1開始新增加的配置參數,用來設定時區。預設date.timezone是被注釋掉的,也就是預設時區是UTC格林威治標準時間。
我們這裡改為 date.timezone = PRC(PRC,People’s Republic of China,中華人民共和國),也就是日期使用中國的時區。這樣可以解決時間相差八小時的問題。
第五步:配置phpMyAdmin
開啟phpMyAdmin目錄,即D:\WAMP\WWW\phpMyAdmin,我們可以看到目錄下有一個config.sample.inc.php 檔案,將這個檔案複製一份到同目錄下,並改名為 config.inc.php。這個config.inc.php 就是phpMyAdmin的設定檔,以下幾步都是在修改這個config.inc.php 檔案的內容。
1. 設定phpMyAdmin登入方式
開啟config.inc.php檔案,尋找 $cfg[‘Servers‘][$i][‘auth_type‘] ,設定如下:
$cfg[‘Servers‘][$i][‘auth_type‘] = ‘cookie‘;
這個參數的值設定為cookie,每次登入phpMyAdmin需要輸入使用者名稱密碼。這也是phpMyAdmin的預設設定。
然後找到 $cfg[‘blowfish_secret‘],設定如下:
$cfg[‘blowfish_secret‘] = ‘admin10000.com‘;
此參數用於Cookies的加密,這是設定為admin10000.com,你可以改成自己的密碼。
這裡介紹一下phpMyAdmin 的四種登入方式:
cookie:這是phpMyAdmin配置預設的登入方式。需在登入介面輸入MySQL的管理帳號和密碼。
當選擇cookie登入方式,還需要設定短語密碼 $cfg[‘blowfish_secret‘] ,這個密碼用於Cookies的加密。
例如:$cfg[‘blowfish_secret‘] = ‘admin10000.com‘;
如果沒有設定,登入phpMyAdmin會提示 “設定檔現在需要一個短語密碼” 的錯誤。
config:直接在地瀏覽器地址欄輸入phpMyAdmin登入地址即可登入,任何人都可以訪問。使用者名稱和密碼提前在設定檔中設定好。
此登入方式必須在設定檔中增加下面2行參數:
$cfg[‘Servers‘][$i][‘user‘] = ‘你的MySQL登入帳號‘;
$cfg[‘Servers‘][$i][‘password‘] = ‘你的MySQL登陸密碼;
如果只是在本機器做開發,可以設定為config登入方式,省去每次輸入密碼的麻煩。
http:彈出一個對話方塊,輸入使用者名稱和密碼後進入。
signon:類似於頁面跳轉的登入方式,同時需要設定$cfg[‘Servers‘][$i][‘SignonURL‘],當你輸入phpMyAdmin登入地址後會自動跳轉到signonURL設定的網址。
2. 開啟phpMyAdmin 進階功能
登入phpMyAdmin 後,在首頁面的最下方會提示:“phpMyAdmin 進階功能未全部設定,部分功能不可用”。
現在我們來解決這個問題。使用phpMyAdmin的匯入功能,匯入phpMyAdmin/scripts/create_tables.sql 這個檔案,從而建立必要的資料表。
接下來還需要建立一個MySQL使用者,並授予其訪問上一步操作建立的資料表的許可權,這個MYSQL使用者稱為控制使用者,為 phpMyAdmin 進階功能提供支援。
我們這裡使用 pma 作為控制使用者以及 pmapass 作為控制使用者的密碼。你可以自行更改。
在phpMyAdmin的SQL查詢功能框中輸入以下SQL代碼:
GRANT USAGE ON mysql.* TO ‘pma‘@‘localhost‘ IDENTIFIED BY ‘pmapass‘; GRANT SELECT ( Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv ) ON mysql.user TO ‘pma‘@‘localhost‘; GRANT SELECT ON mysql.db TO ‘pma‘@‘localhost‘; GRANT SELECT ON mysql.host TO ‘pma‘@‘localhost‘; GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO ‘pma‘@‘localhost‘;
接著我們在 config.inc.php 中找到 User used to manipulate with storage 這一行。把它下面的2行參數注釋(雙斜杠“//”)去掉。結果為:
$cfg[‘Servers‘][$i][‘controluser‘] = ‘pma‘; $cfg[‘Servers‘][$i][‘controlpass‘] = ‘pmapass‘;
這兩行分別是控制使用者和控制使用者密碼。也就是上邊我們建立的那個使用者。
接著找到 Storage database and tables 這一行,把下面的幾個參數的注釋去掉。結果為:
$cfg[‘Servers‘][$i][‘pmadb‘] = ‘phpmyadmin‘; $cfg[‘Servers‘][$i][‘bookmarktable‘] = ‘pma_bookmark‘; $cfg[‘Servers‘][$i][‘relation‘] = ‘pma_relation‘; $cfg[‘Servers‘][$i][‘table_info‘] = ‘pma_table_info‘; $cfg[‘Servers‘][$i][‘table_coords‘] = ‘pma_table_coords‘; $cfg[‘Servers‘][$i][‘pdf_pages‘] = ‘pma_pdf_pages‘; $cfg[‘Servers‘][$i][‘column_info‘] = ‘pma_column_info‘; $cfg[‘Servers‘][$i][‘history‘] = ‘pma_history‘; $cfg[‘Servers‘][$i][‘tracking‘] = ‘pma_tracking‘; $cfg[‘Servers‘][$i][‘designer_coords‘] = ‘pma_designer_coords‘; $cfg[‘Servers‘][$i][‘userconfig‘] = ‘pma_userconfig‘;
第六步:測試
開啟服務:進入Apache的bin目錄下依次執行:
httpd -k installhttpd -k start
將如下代碼儲存為index.php檔案,放到D:\WAMP\WWW目錄下面。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>測試伺服器</title> </head> <body> <div style="text-align:center; color:red"> <?php $link=mysql_connect("localhost","你的mysql管理帳號","你的mysql管理密碼"); if(!$link) echo "MySQL資料庫 串連失敗!"; else echo "MySQL資料庫 串連成功!"; mysql_close(); ?> </div> <br/> <?php phpinfo(); ?> </body></html>
然後在瀏覽器地址欄輸入“http://localhost:8080/index.php”。
第七步:管理資料庫
http://localhost:8080/phpMyAdmin
Windows+Apache搭建PHP開發環境