所以我几天前问了这个问题,但是由于我在 ubuntu 16.04 上运行,所以主题被关闭了。现在我已经更新到 Ubuntu 20.04.3 LTS。
我在 apache 上有一个 php 页面,还有我的 oracble db 连接:
$conn=odbc_connect("hostname","user","password");
给了我这个错误:
AH01071:出现错误“PHP 消息:PHP 警告:odbc_connect():SQL 错误:[unixODBC][驱动程序管理器]未找到数据源名称,且未指定默认驱动程序,SQLConnect 中的 SQL 状态为 IM002
我知道我需要安装驱动程序才能使其工作,但我不确定要安装哪一个?
由于 Oracle 数据库位于不同位置,因此必须在我的计算机上安装 Java (jdk)?
答案1
您的编程语言显然是 PHP,因此它与 Java、JDK、JDBC 或任何其他语言都无关。
我将总结两个来源,因为在我看来它们足够好,所以没有必要在这里复制所有内容。
对于 PHP,最简单的方法是使用 Oracle Instant Client 和 PHP 数据库对象 (PDO)。
摘要Ubuntu 维基:
安装以下软件包,这些软件包在 Oracle 网站上以 RPM 软件包形式提供:
oracle-instantclient-basiclite
oracle-instantclient-devel
oracle-instantclient-sqlplus
接下来,安装 PHP OCI8:参见这里,从第 7 步开始。总结一下:要发出的核心命令是通过 PHP PECL 进行安装:
pecl install oci8 # PHP 8
pecl install oci8-2.2.0 # PHP 7.x
最后但同样重要的一点是,确保php.ini
(取决于您使用的是 PHP-CLI 还是 PHP-FPM,它可能是/etc/php/VERSION/php-cli
或/etc/php/VERSION/php-fpm
,其中VERSION
可能是类似于7.4
或8.0
)加载 OCI 驱动程序:
extension=oci8
extension=pdo_oci
这应该就是全部了。如果还有其他问题,请参考我上面链接的 Ubuntu Wiki。对我来说,这些步骤已经足够了。
$dbconn = new PDO('oci:dbname=MY_CONNENCTION', 'username', 'pa55w0rd');
MY_CONNECTION
可以是文件中提供的名称,也可以是文件中等号tnsnames.org
( ) 右侧提供的整个长连接字符串,通常以或开头。=
tnsnames.ora
(DESCRIPTION=
(DESCRIPTION_LIST=