上面和网上说的差不多(类似linux编译安装),去oracle下载如下安装包(可以选择版本,我这里选择12.2)instantclient-basic-macos.x64-12.2.0.1.0-2。zipinstantclient-sdk-macos.x64-12.2.0.1.0-2.zipinstantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip因为macOS开启了SIP,所以基本上所有的操作都需要在/usr/local/解压目录:sudounzipinstantclient-basic-macos.x64-12.2.0.1.0-2.zip-d/usr/local/sudounzipinstantclient-sdk-macos.x64-12.2.0.1.0-2。zip-d/usr/local/sudounzipinstantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip-d/usr/local/#设置环境变量vim~/.bash_profileexportLD_LIBRARY_PATH="/usr/local/instantclient_12_2”默认会解压到/usr/local/instantclient_12_2目录下。网上的资料说此时直接使用peclinstalloci8,但实际上macOS默认并没有安装这个命令;Homebrew这时候还没有安装,我先安装一下。pear,首先参考了这篇文章http://www.mayanlong.com/archives/2018/pear.html发现有些地方因为开启了SIP而无法通过,然后查看了官方文档https://pear.php.net/manual/en/installation.getting.php参考MacOSX部分curl-Ohttps://pear.php.net/go-pear.pharphp-ddetect_unicode=0go-pear的内容。phar以下内容摘自官方文档你现在可以配置PE了用于安装的AR。首先您需要更改安装基础。因此键入1,然后按Enter。输入/usr/local/pear按Enter。然后,您将需要更改Binaries目录。键入4,然后按Enter。输入/usr/local/bin回车。这里基本上可以使用pecl了。执行下面的命令sudopeclinstalloci8运行安装还是会报错missingPHP_AUTOCONFisnotconfigured;查询后得知autoconf需要安装,不建议直接安装依赖太多,我没有验证),你应该使用Homebrew安装Homebrewruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)”由于众所周知的原因,慢如蜗牛;那么,要想找到解决办法,可以参考下面的方法在macOS系统下安装Homebrew。其实有些矛盾。比如文中提到的变量在接下来的homebrew-coreclone中是不会生效的,会导致仓库很慢。暂时没有得到任何解决方案。完成后我将几个地址替换成国内的镜像。如文章中所述,我将运行命令brewinstallautoconf。brew的命令行默认是没有提示的,所以可以参考官方文档https://docs.brew.sh/Shell-Completion来设置,打开提示再运行,应该就可以了安装sudopeclinstalloci8然后重启Apachesudoapachectlrestart,通过访问带有phpinfo()的页面;确认。这时候一般安装OCI8,但是项目需要PDO_OCI。用老办法炮制sudopeclinstallpdo_oci发现安装不了,说没有这个库,或者要求PHP版本小于6。这时候只能通过编译源码了。扩展现实现在(这些步骤和Ubuntu下编译完全一样)查看PHP版本php-v得到7.1.23版本,然后去PHP官网下载对应版本的源码https://www.php.net/releases/然后解压,方便操作例如我放在桌面,进入目录后输入ext/pdo_oci/,将命令行切换到这个目录,然后运行phpize./configure--with-pdo-oci=instantclient,/usr/local/instantclient_12_2,12.2make#这里会报安装失败,原因是SIP无法创建目录。由于SIP,此时sudomakeinstall无法继续。只能关闭SIP,要关闭SIP需要重启按住cmd+R然后到菜单栏打开终端在#CloseSIPcsrutildisable#重启reboot然后进入系统后重新编译安装即可成功(可以选择是否恢复SIP,重启并设置csrutilenable)最后配置php.iniextension=pdo_oci.so并重启Apachesudoapachectlrestart,再次访问项目,可以正常打开,这里的目的就达到了
