摘要:無論是還是圖形庫,都是以動態鏈接庫的形式發布的。但是那里寫的很啰嗦,居然還要安裝,那里倒是找到了一篇關于動態鏈接庫模塊編譯的東西。
本文為筆者以前的記錄,雖然是10.9的版本,但是應該也是能在10.10上完美成功
最近要做圖書館查詢服務的轉換php,上次寫oracle中間層的時候因為沒有oci8模塊和oracle實例,所以手工寫代碼沒有調試,這次工作量有些龐大,所以花費了一些時間來安裝oci8模塊,方便php調試工作。
php是通過動態加載動態鏈接庫來使用各個php擴展的。無論是mysql還是gd圖形庫,都是以動態鏈接庫的形式發布的。我首先baidu了一下,Mac用戶想要使用oracle的人真不少,但是大多數給出的方案都是重新編譯php。很多人甚至不用Mac自帶的apache2和php,直接自己編譯apache和php,我個人是不贊同這樣做的。既然他已經給你做好了php和apache,那這個基本上是最不會出問題的。所以我也就沒有采用,準備選擇編譯成.so的形式來加載。
但是翻看了一個多小時,幾乎沒有編譯so模塊的文章,即使有編譯的文章也都是靠macport,brew等第三方軟件包下載zlib等各種庫文件來編譯,個人精神潔癖問題 ,這種方式也不在選擇之列。
既然網上沒有,那我就去看一下php和oracle的官方文檔。但是oracle那里寫的很啰嗦,居然還要安裝oracle11g,php那里倒是找到了一篇關于動態鏈接庫模塊編譯的東西。
有三種方法
重新編譯整個php,./configure --with-oci8=shared
以動態鏈接庫的形式
以靜態鏈接庫的形式
啰哩啰唆的說了一堆,其實就是具體編譯oci8.so然后在php.ini中加載。
上google搜索了一下有這么一個外國網站倒是有了一篇關于編譯oci8的文章
OCI8 relies on OS X having several client libraries and tools from
Oracle installed on OS X. For most intents and purposes download the
64-bit version of the following files under the title "Version
10.2.0.4 (64-bit)":
instantclient-basic-10.2.0.4.0-macosx-x64.zip
instantclient-sqlplus-10.2.0.4.0-macosx-x64.zip
instantclient-sdk-10.2.0.4.0-macosx-x64.zip
其實就是要下載Oracle官方的instantclient,根據basic中的dylib文件和sdk中的頭文件來編譯,至于第二個sqlplus則是可有可無的東西,用來獨立連接oracle數據庫,官方下載地址 我當然不可能去下載10g的客戶端,直接下載了11g的instantclient。 下載完成以后解壓所有文件到一個文件夾instantclient_11_2里面,目錄如下:
下面打開終端,復制必要的文件到系統目錄下。
sudo cp instantclient_11_2/sdk/include/*.h /usr/include(這個/usr/include文件夾是Xcode安裝命令行工具以后有的) sudo cp instantclient_11_2/sqlplus /usr/bin(這個其實就是安裝sqlplus客戶端,其實不弄也可以的) sudo cp instantclient_11_2/*.dylib /usr/lib sudo cp instantclient_11_2/*.dylib.* /usr/lib(這其實就是復制lib動態鏈接庫) # 下面到/usr/lib目錄做個符號鏈接 sudo ln -s libclntsh.dylib.10.1 libclntsh.dylib
接下來下載編譯oci8,其實這個可以用pecl來自動化完成。但是你必須安裝好autoconf和Xcode命令行工具,autoconf我是直接編譯安裝的,這個百度搜索一下就行了,Xcode命令行工具本來我安裝的,結果10.8-10.9的時候被升級干掉了,所以只能再安裝一遍,我是后來編譯出錯,查看信息,發現是缺少頭文件,當時很納悶,都放到/usr/include了怎么還缺少,原來是命令行工具的include文件夾被干掉了。只能再重新安裝。
用pecl很自動化的
sudo pecl install oci8
然后出現提示:
Please provide the path to the ORACLE_HOME directory. Use"instantclient,/path/to/instant/client/lib" if you"re compiling with Oracle Instant Client [autodetect] :
這是要你提供instantclient動態鏈接庫的目錄的意思
直接輸入instantclient,/usr/lib然后就編譯好了oci8.so
如果沒有pecl,那手動下載oci8的源代碼:
php_oci8-1.3.4.tgz
解壓zip文件進入目錄
phpize ./configure --with-oci8=shared,instantclient,/usr/lib 看到這里大家都明白了,其實就是和pecl一樣,要你提供lib文件的目錄位置 make make install
然后打開/etc/php.ini在extension的段落加上extension=oci8.so就行了,重啟apache使用phpinfo函數就能看到oci8被成功加載了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21029.html
摘要:寫一個簡單的文件測試一下配置結果,這次我們把文件建在我們個人的網站目錄吧。現在環境搭建完成,要正常使用我們需要配置用戶,默認用戶的密碼是空值,實際使用肯定需要修改一下。 2015年5月9日更新 更新內容:針對Mac OS X 10.10.3不能訪問用戶目錄 http://localhost/~lulin 檢查Apache版本是否升級 Server version: Apache/2...
摘要:確定環境的干凈。這一步要優化的話應該是做一個類似緩存的機制,對于這種配置加載的性能提升所以我們在調試必然是要在這里配置環境的接口。 前言 在網上找了一些相關配置的例子,覺得很多比較復雜,并且配置項過于多了,有很多冗余并不是最開始就需要的配置,所以寫一下記錄,也方便以后自己查閱。 一、brew 安裝 php 在 Mac OS 這邊不需要手動去下載編譯打包,直接使用 brew 進行快捷安裝...
摘要:連接數據庫雖然不是最佳拍檔,但組內開發確實有這樣需求。安裝是的連接數據庫的簡單客戶端,不用安裝一個客戶端就可以連接數據庫,有和版本。接下來還要讓系統能夠找到客戶端的庫文件,修改執行使環境變量生效。 php連接oracle數據庫雖然不是最佳拍檔,但組內開發確實有這樣需求。如果沒有參考合適的文檔,這個過程還是挺折磨人的,下面是一個記錄,原型是國外的一篇博客 Installing PDO_O...
閱讀 1436·2021-09-02 19:23
閱讀 1586·2021-08-11 11:19
閱讀 641·2019-08-30 15:55
閱讀 1653·2019-08-30 12:50
閱讀 2241·2019-08-30 11:23
閱讀 2180·2019-08-29 13:13
閱讀 1500·2019-08-28 18:13
閱讀 3344·2019-08-26 11:53