macOS Mojave 安裝 PHP OCI8/PDO_OCI

前面和網上說的都差很少(和 Linux 編譯安裝相似),去 Oracle 下載以下的安裝包(能夠選擇版本,我這裏選擇的是 12.2)php

  • instantclient-basic-macos.x64-12.2.0.1.0-2.zip
  • instantclient-sdk-macos.x64-12.2.0.1.0-2.zip
  • instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip
因爲 macOS 開啓了 SIP 基本上全部的操做都須要在 /usr/local/ 目錄下進行

解壓:html

sudo unzip instantclient-basic-macos.x64-12.2.0.1.0-2.zip -d /usr/local/
sudo unzip instantclient-sdk-macos.x64-12.2.0.1.0-2.zip -d /usr/local/
sudo unzip instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip -d /usr/local/

# 設置環境變量
vim ~/.bash_profile
export LD_LIBRARY_PATH="/usr/local/instantclient_12_2"
默認都會解壓到 /usr/local/instantclient_12_2 目錄下

網上的資料都是表示這個時候直接使用 pecl install oci8,而實際上 macOS 默認並無安裝這個命令;這個時候也沒有安裝 Homebrewgit

因此我先安裝 Pear,先是參考這篇文章github

curl -O https://pear.php.net/go-pear.phar
php -d detect_unicode=0 go-pear.phar

如下摘錄於官方文檔sql

You're now ready to configure PEAR for installation.macos

First you need to change the Installation Base.apache

  1. So type 1, and then press Enter.
  2. Enter /usr/local/pear
  3. Press Enter.

Then, you will need to change the Binaries directory.vim

  1. Type 4, and then press Enter.
  2. Enter /usr/local/bin
  3. Press Enter.

到這裏基本上可使用 pecl 了,執行以下命令segmentfault

sudo pecl install oci8

運行安裝表示仍是會報錯缺失 PHP_AUTOCONF 未配置; 查詢以後得知須要安裝 autoconf 而且不建議直接安裝(說是太多依賴,我沒有驗證),應該使用 Homebrewruby

安裝 Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

因爲衆所周知的緣由, 慢如蝸牛; 因而查詢解決方案, 參考以下

  • macOS系統下安裝Homebrew
  • 實際上有些地方是不一致的,好比文中提到的沒有的變量再接下來的 homebrew-core 的 clone 中沒法生效,致使這個倉庫會很是慢,暫時也沒有獲得什麼解決方案
  • 按照完成以後再將幾個地址換成國內的鏡像,如文中所述
  • 以後直接運行命令 brew install autoconf

默認在命令行中 brew 是沒有提示的,那麼能夠參考官方文檔 https://docs.brew.sh/Shell-Completion 進行設置,開啓提示

而後再次運行,應該就能夠安裝了

sudo pecl install oci8

而後重啓 Apache sudo apachectl restart,經過訪問有 phpinfo(); 的頁面去確認。

這個時候通常 OCI8 是安裝好了,但是項目須要的是 PDO_OCI,使用老的辦法炮製 sudo pecl install pdo_oci 發現安裝不了,說沒有這個庫,或者是要求 PHP 版本小於 6

這個時候只能經過編譯源碼中的擴展來實現(這些步驟和在 Ubuntu 下編譯就是如出一轍的了)

  1. 查看 PHP 版本 php -v 獲得版本 7.1.23 那麼去 PHP 官網下載對應版本的源碼 https://www.php.net/releases/
  2. 解壓到方便操做的地方,好比我放在桌面
  3. 進入目錄後進入 ext/pdo_oci/
  4. 將命令行切換到這個目錄,而後運行 phpize
./configure --with-pdo-oci=instantclient,/usr/local/instantclient_12_2,12.2
make

# 這裏會報安裝失敗,緣由是沒法建立目錄因爲 SIP 的緣由
sudo make install

因爲 SIP 的緣由到這一步就沒法再繼續了,只可以關閉 SIP,而關閉 SIP 須要重啓按住 cmd + R 而後再菜單欄中打開終端

# 關閉 SIP
csrutil disable

# 重啓
reboot

而後進入系統以後再次編譯安裝便可成功(能夠選擇是否恢復 SIP,重啓並設置 csrutil enable

最後配置 php.ini

extension = pdo_oci.so

再重啓 Apache sudo apachectl restart,再次訪問項目,已經能夠正常打開

到這裏目的已經達成了

相關文章
相關標籤/搜索