首先,從PHP的官方網(wǎng)站下載了PHP 5.2.14 For Windows的壓縮包,解壓至D盤的PHP目錄;隨后下載了Apache HTTP Server的最新版本——2.2.17,是MSI格式的,安裝也非常簡(jiǎn)單。接著就是將PHP與HTTP Server關(guān)聯(lián)起來——讓HTTP Server能夠處理php請(qǐng)求,其實(shí)也就是修改httpd.conf文件了。有關(guān)這一點(diǎn),網(wǎng)上的資料已經(jīng)非常詳細(xì),官方的介紹在這里。環(huán)境搭建好了之后,為了讓PHP能夠更強(qiáng)大,接下來就是通過修改PHP.ini文件來裝載所需的PHP Extention(PHP擴(kuò)展)了,而這些擴(kuò)展在Windows平臺(tái)下就是一個(gè)個(gè)動(dòng)態(tài)鏈接庫(DLL文件)。這下老大難的問題來了——無法裝載某些動(dòng)態(tài)鏈接庫(PHP startup: Unable to load dynamic library)。對(duì)于這個(gè)問題,我們通過Google能夠找到如下的解決方案:
切記修改Windows的環(huán)境變量,在PATH環(huán)境變量當(dāng)中增加PHP所在的路徑以及PHP擴(kuò)展所在的路徑;
如果第一點(diǎn)做了之后,仍然無法解決,就要留意被加載的動(dòng)態(tài)鏈接庫所依賴的DLL文件是否缺失。PHP官方提供了一個(gè)在Windows下安裝PHP擴(kuò)展的指南,里面指出了依賴關(guān)系。
通常上述兩個(gè)方案就能解決無法裝載動(dòng)態(tài)鏈接庫的問題了,但是也會(huì)有例外的。上個(gè)星期我在搭建PHP開發(fā)環(huán)境的時(shí)候,就遇到了無法裝載php_curl.dll動(dòng)態(tài)鏈接庫的問題。不管是環(huán)境變量還是依賴的DLL文件(官方文檔指出:php_curl.dll所依賴的文件是libeay32.dll, ssleay32.dll)都是齊備的,這讓我百思不得其解。我把網(wǎng)上能夠找到的辦法都試了個(gè)遍,甚至還把相關(guān)的dll文件全部復(fù)制到了Windows的system32目錄當(dāng)中(其實(shí)這樣做是毫無意義的)。這個(gè)小問題讓我整個(gè)周末如鯁在喉,甚是不爽。經(jīng)過一番思考,我還是把問題定位到了動(dòng)態(tài)鏈接庫所依賴的DLL文件缺失上。
盡管官方文檔告訴我php_curl只依賴上述兩個(gè)DLL文件,但這是真的么?于是,我在下載了查看DLL依賴關(guān)系的軟件——Dependency Walker。用這個(gè)軟件一看,果然不出我所料:php_curl.dll所依賴的zlib.dll不存在!找到問題根源,接下來的事情都好辦了,通過Google找到zlib的老巢,下載最新的zlib.dll,然后將該文件放到PHP的安裝目錄下即可(這里仍然需要注意兩點(diǎn),一是對(duì)于下載的DLL文件,如果文件名不是zlib.dll,需要改為zlib.dll;二是PHP安裝的目錄必須加入到PATH環(huán)境變量中)。至此,問題解決!