跳坑成功,手摸手带你使用PHP连接Oracle数据库
文章目錄
- 1. Linux版
- 1.1 安裝oracle客戶端
- 1.2 安裝oci8擴展
- 1.3 安裝pdo_oci擴展
- 1.4 測試PHP連接Oracle數據庫
- 2. Windows版
- 2.1 安裝OCI8
- 2.2 安裝Oracle Client客戶端
- 2.3 測試PHP連接Oracle數據庫
- 3. 總結
看起來挺奇怪的,為啥是PHP和Oracle呢,一般不是PHP和Mysql嗎,他們倆才是黃金搭檔啊🤣,一切都源于免費啊~,Oracle數據庫是免費薅來的,俗話說不用白不用🤩,既然有這個資源就像怎么利用起來,然后就開始整,因為網絡上的文章都是老的,已經不適用于新版本的數據庫和PHP版本了,結果遇到了很多坑,經過一周的跳坑終于成功上岸,特此記錄??
1. Linux版
- 服務器:CentOS7
- PHP版本:V7.4.3
- Oracle數據庫版本:19c
1.1 安裝oracle客戶端
首先去Oracle官網下載三個包到電腦本地,下載鏈接:
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
- oracle-instantclient-devel-21.1.0.0.0-1.x86_64.rpm
- oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm
- oracle-instantclient-sqlplus-21.1.0.0.0-1.x86_64.rpm
將這三個包上傳到/usr/lib/oracle目錄下(oracle文件夾為新建文件夾),進入文件夾執行安裝命令:
$ rpm -ivh oracle-instantclient-*添加環境變量,并保存:
$ vim /etc/profile # 在尾部增加如下內容 export ORACLE_HOME=/usr/lib/oracle/21/client64 export ORACLE_BASE=/usr/lib/oracle/21 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH保存退出后執行以下命令后使環境變量生效:
$ source /etc/profile🔔 注意:安裝oci8和pdo_oci擴展都需要進行這第一步
1.2 安裝oci8擴展
因編譯安裝經常報各種錯誤,這里推薦使用pecl安裝:
$ export PHP_DTRACE=yes $ pecl install oci8-2.2.0 # 輸入路徑 instantclient,/usr/lib/oracle/21/client64/lib🔔 若報錯 Cannot find sys/sdt.h which is required for DTrace support
執行安裝:yum install systemtap-sdt-devel
看到以下信息表示安裝擴展成功:
Build process completed successfully Installing '/usr/lib64/php/modules/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中增加擴展引入extension=oci8.so :
$ vi /etc/php.ini # 添加 extension=oci8.so # 驗證是否成功 $ php -m | grep oci8 # 出現oci8表示安裝成功 oci8 # 需要修改下/usr/lib64/php/modules/oci8.so 文件權限7551.3 安裝pdo_oci擴展
vi /etc/ld.so.conf # 加入此行,保存退出 /usr/lib/oracle/21/client64/lib/建立軟連接,如果安裝oci8擴展時,已經建立過,跳過即可
ln -s /usr/lib/oracle/21/client64 /usr/lib/oracle/21/client ln -s /usr/include/oracle/21/client64 /usr/include/oracle/21/client去PHP官方下載php-7.4.19.tar.gz壓縮文件,解壓后將pdo_oci文件夾放到服務器的php擴展目錄中:cd /usr/include/php/ext,然后執行下面的命令:
# 執行下方命令,編譯安裝處理,類似oci8安裝 $ cd /usr/include/php/ext/pdo_oci $ /usr/bin/phpize $ ./configure --with-pdo-oci=instantclient,/usr/lib/oracle/21/client64/lib \--with-oci8=instantclient,/usr/lib/oracle/21/client64/lib $ make && make install添加pdo_oci擴展:
$ vi /etc/php.d/pdo_oci.ini # pdo_oci.ini是新建的 $ extension=/usr/lib64/php/modules/pdo_oci.so # 此處為pdo_oci.so的全路徑,在編譯后有展示重啟PHP服務:
systemctl restart httpd systemctl restart php-fpm1.4 測試PHP連接Oracle數據庫
首先準備連接文件,在oracle數據庫下載 oralce wallet 文件,這個在Oracle數據庫后臺管理里面下載,解壓出來一般有以下文件:
將文件夾放到服務器的一個目錄里(🔔注意保密哦),這里我放在/usr/lib/oracle/Wallet_videoplatform2,然后PHP測試代碼如下:
🔔 若出現 ORA-12546: TNS:permission denied 錯誤執行以下語句即可:
setsebool -P httpd_can_network_connect on
訪問頁面,結果:
終于連接成功了!??
2. Windows版
2.1 安裝OCI8
PHP7 需要選擇 2.2.0 版本的oci,根據自己的PHP版本自行選擇版本:
下載鏈接:https://pecl.php.net/package/oci8/2.2.0/windows
可以先通過查看phpinfo() 的PHP Extension Build 欄位查看,我的PHP是NTS版的,所以下載oci也要是NTS版的。
下載完后,將解壓的文件,拷貝到PHP擴展目錄php7.4.3nts\ext下覆蓋原文件,擴展目錄在php.ini中 extension_dir = xxxxxx指定。
2.2 安裝Oracle Client客戶端
Oracle Instant Client 是一組可輕松安裝的免費庫,允許程序連接到本地或遠程 Oracle 數據庫實例。
下載完后里面有oci.dll這個文件,當啟動了php的擴展后,找的也就是這個 oracle 文件。那php 怎么找這個dll呢,加系統環境變量即可。
然后修改php.ini配置文件:
# 去除前面的分號;開啟擴展,若沒有就添加 extension=pdo_oci extension=php_oci8.dll最后,重啟 Apache 即可。
查看是否安裝成功,可以用 cmd 命令行查看是否已成功安裝oci8擴展,如成功安裝則顯示以下信息:
也可在phpinfo()中查看擴展信息:
2.3 測試PHP連接Oracle數據庫
首先準備連接文件,在oracle數據庫下載 oralce wallet 文件,解壓出來一般有以下文件:
將文件放到本地的一個目錄里,這里我放在D:\oracle\Wallet_videoplatform2,然后測試代碼:
訪問數據庫成功,頁面顯示數據:
3. 總結
每個人都可能是第一個吃螃蟹的人,如果你有機會遇到了,不要怕,把握機會,拼一下有可能就嘗到了甜頭。
爬坑不易,點贊支持下🌹
PS:有童鞋想知道怎么獲取永久免費的服務器和永久免費數據庫私信我,偷偷告訴你喲 😏
總結
以上是生活随笔為你收集整理的跳坑成功,手摸手带你使用PHP连接Oracle数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【八】Java封装
- 下一篇: ThinkPHP6项目基操(11.实战部