日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

跳坑成功,手摸手带你使用PHP连接Oracle数据库

發布時間:2025/3/15 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跳坑成功,手摸手带你使用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 文件權限755

1.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-fpm

1.4 測試PHP連接Oracle數據庫

首先準備連接文件,在oracle數據庫下載 oralce wallet 文件,這個在Oracle數據庫后臺管理里面下載,解壓出來一般有以下文件:

將文件夾放到服務器的一個目錄里(🔔注意保密哦),這里我放在/usr/lib/oracle/Wallet_videoplatform2,然后PHP測試代碼如下:

<?php // tnsnames.ora 信息里拼接數據庫連接信息(照著拼就行了) $dbstr ="tcps://adb.ap-seoul-1.oraclecloud.com:1522/ge815e794bb3bb9_xxxxxxxxx_high.adb.oraclecloud.com?wallet_location=/usr/lib/oracle/Wallet_videoplatform2";$dbconn = oci_connect('用戶名','密碼',$dbstr);if($dbconn!=false) {echo "連接成功".'<br/>';if(OCILogOff($dbconn)==true){echo "關閉連接成功!".'<br/>';//} } else {echo "連接失敗".'<br/>'; }echo phpinfo();

🔔 若出現 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 數據庫實例。

  • 首先下載oracle客戶端 Oracle 官方客戶端下載 我這里下的是 instantclient-basic-windows.x64-19.11.0.0.0dbru.zip 版本。
  • 將軟件包解壓縮到單個目錄中,例如 D:\oracle\instantclient_19_11
  • 將此目錄添加到PATH環境變量。如果您安裝了多個版本的Oracle庫,請確保新目錄首先出現在路徑中。重新啟動任何終端窗口,否則請確保您的應用程序使用了新的PATH。
  • 下載完后里面有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,然后測試代碼:

    <?php // tnsnames.ora 信息里拼接數據庫連接信息(照著拼就行了) $dbstr ="tcps://adb.ap-seoul-1.oraclecloud.com:1522/xxxxx_videoplatform2_high.adb.oraclecloud.com?wallet_location=D:\oracle\Wallet_videoplatform2";$conn = oci_connect('ADMIN','xxxxxxx',$dbstr);if (!$conn) {$e = oci_error();trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); }// 查詢并渲染 $stid = oci_parse($conn, 'SELECT * FROM users'); $r = oci_execute($stid); print "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {print "<tr>\n";foreach ($row as $item) {print " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";}print "</tr>\n"; } print "</table>\n"; oci_free_statement($stid);

    訪問數據庫成功,頁面顯示數據:

    3. 總結

    每個人都可能是第一個吃螃蟹的人,如果你有機會遇到了,不要怕,把握機會,拼一下有可能就嘗到了甜頭。

    爬坑不易,點贊支持下🌹

    PS:有童鞋想知道怎么獲取永久免費的服務器和永久免費數據庫私信我,偷偷告訴你喲 😏

    總結

    以上是生活随笔為你收集整理的跳坑成功,手摸手带你使用PHP连接Oracle数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。