周末又尝试了一次在 Docker 下开发,又一次暂时的放下。这次放下的原因,macOS 不具备 Linux Kernel,导致挂载卷文件 IO 慢,像普通的 Laravel 项目,开箱就得几百个文件的加载,导致项目 TTBF 不正常。docker-bg-sync 的原理是在后台运行一个 unison 不停的从宿主系统目录同步到指定的应用容器的执行目录,这个是我目前了解到比较好的方案,我仅试了一次,没有成功,放弃。等等看吧,Docker 本来是为了开发便利的,搞得我有点焦虑。下载了个 MAMP,日常开发绝对满足了,1分钟配置完事,真他么的香。可是,有些项目中需要连接 Oracle,趁着上次在 Docker 上搞 oci8 还比较熟悉。把本次在 MAMP 上按照扩展的方法记录下。

本机环境

  • macOS MoJave
  • MAMP5.2
  • PHP7.2.10

安装 Oracle Instant Client

Oracle 官网下载 Oracle Instant Client 相关文件(需使用 Oracle账户登录,并同意相关协议)。

  • instantclient-basiclite-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

命令操作

## 解压
sudo unzip instantclient-basiclite-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

## 重命名文件夹
cd /usr/local
sudo mv instantclient_12_2 instantclient

## 设置环境变量
vi ~/.zshrc
# 文件添加
export LD_LIBRARY_PATH="/usr/local/instantclient"

## 开始安装 oci8
cd /Applications/MAMP/bin/php/php7.2.10/bin
./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,/usr/local/instantclient

## 最后显示
Build process completed successfully
Installing '/Applications/MAMP/bin/php/php7.2.10/lib/php/extensions/no-debug-non-zts-20170718/oci8.so'
install ok: channel://pecl.php.net/oci8-2.2.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini

修改 php.ini

去 MAMP 里面修改 php.ini 添加 extension=oci8.so

查看 phpinfo

遇到错误

  1. Cannot find autoconf. Please check your autoconf installation and the

直接运行 brew install autoconf 即可