使用PHP连接到Oracle

时间:2014-06-16 10:24:41

标签: php oracle

我正在尝试连接到不在我的PC上的Oracle数据库。我已经安装了Xampp,PHP和Oracle即时客户端。我已经添加了一个Windows环境路径到C:\ instantclient_11_1。当我从phpinfo()检查时,也启用了Oci8。我已将扩展名extension_dir = C:\ php-5.4.0 \ ext添加到php.ini并且还启用了extension = php_oci8_11g.dll。然后,当我尝试使用以下代码连接到数据库时:

 <?php
 $conn = oci_connect('username', 'password');
 $query = 'select table_name from user_tables';
  ?>

它表示警告:oci_connect():ORA-12560:TNS:协议适配器错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

oci_connect call has an optional third parameter for the connection_string。由于您没有在环境中指定TWO_TASKLOCAL,如文档中所述,您必须提供该连接字符串,以便PHP知道如何查找和连接到您的数据库。

简易连接语法的一般模式是:

$conn = oci_connect('username', 'password', '//hostname:port/service_name');

其中hostname是数据库所在服务器的名称或IP地址 - 由于您说它不在您的PC上,因此localhost; port是侦听器端口,默认为1521但可能是其他东西(您可以在服务器上执行lsnrctl status检查);并且service_name是数据库服务名称,可能与SID相同或不同(您可以lsnrctl services查看服务器上的有效值)。

如果您有与同一数据库的SQL Developer连接,则主机名和端口将显示在连接设置中。它还可能显示服务名称,或者可能显示SID,具体取决于它的配置方式。服务名称和SID可能相同。 (如果您无法运行lsnrctl但拥有足够的权限,则可以尝试select value from v$parameter where name = 'service_names',但很可能您无法看到该视图。