為PHP編譯imap擴充套件

大江小浪發表於2011-06-01

最近為專案增加了郵箱登陸的驗證,本地測試OK,部署至伺服器上提示 imap_open 為未定義函式,由此可知缺少了IMAP的PHP擴充套件。

解決辦法,首先看官網的安裝說明,原來需要提前安裝 imap-open2007e 才行。從 ftp://ftp.cac.washington.edu/imap/ 的網站上下載了原始碼,但是這個的安裝卻讓我比較頭疼,因為沒有 configure 檔案,也沒有一個說明文件。參考了其他朋友的辦法,使用了下面的方法:

wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
tar zxf imap.tar.Z
cd imap-2007a
make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd IP6=4
echo “set disable-plaintext nil” > /etc/c-client.cf
mkdir /usr/local/imap-2007a
mkdir /usr/local/imap-2007a/include/
mkdir /usr/local/imap-2007a/lib/
chmod -R 077 /usr/local/imap-2007a
rm -rf /usr/local/imap-2007a/include/*
rm -rf /usr/local/imap-2007a/lib/*
rm -rf /usr/sbin/imapd
cp imapd/imapd /usr/sbin/
cp c-client/*.h /usr/local/imap-2007a/include/
cp c-client/*.c /usr/local/imap-2007a/lib/
cp c-client/c-client.a /usr/local/imap-2007a/lib/libc-client.a

 

他這個過程中 rm –rf 的過程,我覺得是防止這幾個目錄中有其他不必要的檔案,所以建立了資料夾後,又做了一次刪除操作。完成這個過程之後,系統的 imap-open 環境就準備好了,進行php擴充套件的安裝。

我這裡因為已經安裝了PHP,而且我也不想重新編譯整個環境,所以我只需要編譯這個擴充套件就行。系統中的PHP為5.2.9版本,找到對應版本的原始碼,進入 ./ext/extension/imap/資料夾下,執行下面的步驟:

/usr/local/apache/bin/phpize

./configure –with-php-config=/usr/local/apache/bin/php-config –prefix=/usr/local/apache/ –with-imap=/usr/local/imap-2007e/ –with-imap-ssl

make

make install

完成後,在php的extension/no-debug-non-zts-xxx 下就能看到編譯好的so檔案,新增到 php.ini 中,重啟伺服器,就可以看到imap 模組啟動了。

參考資料:
1、PHP IMAP Installation
2、終於搞定PHP中安裝imap擴充套件解決辦法
3、PHP with imap support


相關文章