本來想學學php,於是就想搭建web伺服器和sql環境,結果浪費掉了不少時間。
大致的總結下,也算是長個記性。
使用的安裝包分別是httpd-2.2.22-win32-x86-no_ssl .msi,php-5.2.5-Win32.zip和MySQL-installer-community-5.5.28.3.msi,很顯然用的還算是比較新的安裝包。安裝apache還是比較順利的,一路安裝下來,預設監聽本機所有ip的80埠,當然包括迴環地址, 接著解壓php到指定資料夾,接著安裝mysql,開啟安裝目錄下的httpd.conf檔案,做如下調整:
ServerRoot "D:/Apache2.2" 伺服器安裝根目錄
DocumentRoot "D:/phpWeb" 修改為自己的網站根目錄
# This should be changed to whatever you set DocumentRoot to.
<Directory "D:/phpWeb"> 與上一步進行同步修改
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
<IfModule dir_module> 設定預設的被請求檔案
DirectoryIndex index.php index.html
</IfModule>
LoadModule php5_module "D:/php/php5apache2_2.dll" 以模組的方式載入php,注意此處的php5apache2_2.dll對應的apache 版本
LoadFile "D:/php/php5ts.dll" 手動載入php動態連結庫 或者 把這兩個檔案放到system32檔案目錄下
LoadFile "D:/php/libmysql.dll" 載入mysql動態連結庫
PHPIniDir "D:/php" 非必要的配置
AddType application/x-httpd-php .php .html .htm 伺服器端支援動態檔案型別
儲存修改後,測試apache,重啟apache伺服器,在瀏覽器中輸入localhost or 迴環地址,頁面顯示 "It works !"到此說明,apache工作了。
測試php,在phpWeb目錄裡編輯一個index.php 的檔案,內容為<?php phpinfo(); ?>,重複測試apache伺服器的操作,頁面顯示php的配置資訊,檢視是否包括sql模組,很想然沒有,因為php預設是不載入mysql模組的。然後修改php.ini 檔案,主要改動點如下:
extension_dir = "D:/php/ext" 擴充套件dll庫的位置
……
extension=php_mysql.dll 開啟mysql的擴充套件
對於php.ini的修改相當鬱悶,網上找了很多也做了各種修改,似懂非懂的就去嘗試,後來都不管用。 想想mysql是否安裝成功呢,開始用命令列檢視,先看埠3306埠是否處於監聽狀態,使用netstat -a命令,再使用mysql workbench 測試與資料庫的連線是否成功,結果成功說明mysql安裝沒有問題,mysql 的配置檔案是my.ini ,暫時不用動,預設的配置可以工作。 於是問題出在php與mysql的銜接處,問題肯定出在php.ini檔案。
開查php.ini,還是先看看phpinfo()給出的資訊吧,看來看去怎麼沒有mysql模組,開始懷疑我之前是否開啟了配置資訊裡的mysql 擴充套件。God,開啟的竟然是extension=php_MsSQL.dll.此處省略無數字。
Wahtever, 問題總算找到,測試一下,瞬間OK,欲哭無淚。但是回顧整個過程,時間主要浪費在了細小的錯誤上。 總結教訓: 面對問題不能不問百度google閉門造車但也不能盲信盲從 ; 面對問題更多的是持續關注問題,自己分析問題。
下一步詳細分析httpd.conf php.ini my.ini ,靈活配置,並對web伺服器和資料庫伺服器進行效能調優,然後移植網站到新崛起的Nginx web伺服器等。貌似有點偏題了,當然主要目的還是學習可愛的PHP.