【问题标题】:How to connect to Oracle Database with php?如何使用 php 连接到 Oracle 数据库?
【发布时间】:2020-09-20 15:17:16
【问题描述】:

我目前正在开发一个连接到 Oracle 数据库的网站。我有两个php文件,一个用于连接数据库,另一个是html结构本身。

连接.php:

<?php

$servername = "//////";
$username = "/////";
$password = "/////";

$conn = oci_connect($servername, $username, $password);

 if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
 }
 echo "Connected!";

?>

我一直很难连接到数据库。我按照 Oracle 教程在 php.ini 中编辑了 oci8.connection_class= MYPHPAPP,但每次运行 Connect.php 时,我都会收到 HTTP 错误 500。我错过了什么吗?我该怎么办?

编辑 1:我使用了 display_errors,我得到的错误是 Call to undefined function oci_connect()

编辑 2:此时我尝试了一切以使 oci_connect 正常工作。我下载了 oracle 客户端并将其设置为环境变量,但 oci_connect 仍然无法正常工作。如果有 Mac 用户可以帮助我,我将不胜感激。

【问题讨论】:

  • 检查您是否启用了错误报告 - stackoverflow.com/questions/1053424/…。这可能会提供更多信息。
  • 请问您的操作系统、php版本、oracle版本?
  • @NigelRen 我在 php.ini 中找到了 display_errors 但它似乎设置在 => display_errors = MAMP_display_errors_MAMP
  • @Hardood 我正在使用 macOS Mojave、Oracle 12c 和 php 7.4.2。
  • @NigelRen 感谢您的评论。我得到的错误是 undefined oci_connect()

标签: php html


【解决方案1】:

下载合适的oracle客户端到你的机器,解压并复制粘贴到你的系统驱动器中。

将 oracle 客户端的路径添加到环境变量中。

然后您需要使用 php.ini 或 GUI(如果可用)启用 php_oci8_12c 扩展。 打开php文件,编写如下代码:

function connect(){
     $dburl = "(DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = your_db_sid)
     )
     )";
     //db charset is optional
     $db_charset = 'WE8MSWIN1252'; //your db charset goes here
     try {
         return oci_connect("username", "password",$dburl,$db_charset);
       } 
       catch (Exception $e) {
         die($e);
       }
   }

此代码在我的 windows 10 机器、php 7.1.9 和 oracle 12c 上运行良好。

【讨论】:

  • 我将客户端的路径设为环境变量,但我似乎在 php.ini 中找不到 php_oci8_12c 扩展行。我看到 ;oci8.privileged_connect = Off,是否应该取消注释并将值更改为 on?
  • 我不知道如何在 macOS 上配置 PHP,所以请尝试在 php.ini 文件中启用与 oci 相关的任何内容。
【解决方案2】:

搜索您的确切问题后在谷歌中的第四个链接显示以下链接:http://me2learn.wordpress.com/2008/10/18/connect-php-with-oracle-database/

<?php
    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.34)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;

    if($c = OCILogon("system", "your database password", $db))
    {
        echo "Successfully connected to Oracle.\n";
        OCILogoff($c);
    }
    else
    {
        $err = OCIError();
        echo "Connection failed." . $err[text];
    }
?>

【讨论】:

  • 嘿,这段代码和我在上面的问题中问的问题一样。我不断收到错误“调用未定义的函数 ocilogon()”。我想此时我只需要帮助将 oci 库添加到我的 php.ini
猜你喜欢
  • 2014-04-22
  • 2013-06-10
  • 1970-01-01
  • 2014-01-25
  • 2011-08-22
  • 2018-12-30
  • 1970-01-01
  • 2016-09-28
  • 2019-12-30
相关资源
最近更新 更多