使用PHP连接到Oracle

使用PHP连接到Oracle,php,oracle,Php,Oracle,我正在尝试连接到不在我电脑上的Oracle数据库。我已经安装了Xampp、PHP和Oracle instant Client。我已将windows环境路径添加到C:\instantclient\u 11\u 1。当我从phpinfo()检查时,Oci8也已启用。我已经在php.ini中添加了扩展名\u dir=C:\php-5.4.0\ext,还启用了扩展名=php\u oci8\u 11g.dll。然后,当我尝试使用以下代码连接到数据库时: <?php $conn = oci_con

我正在尝试连接到不在我电脑上的Oracle数据库。我已经安装了Xampp、PHP和Oracle instant Client。我已将windows环境路径添加到C:\instantclient\u 11\u 1。当我从phpinfo()检查时,Oci8也已启用。我已经在php.ini中添加了扩展名\u dir=C:\php-5.4.0\ext,还启用了扩展名=php\u oci8\u 11g.dll。然后,当我尝试使用以下代码连接到数据库时:

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

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

。正如文档中提到的,由于您没有在您的环境中指定
TWO_TASK
LOCAL
,因此必须提供该连接字符串,以便PHP知道如何查找并连接到您的数据库

easy connect语法的一般模式是:

$conn = oci_connect('username', 'password', '//hostname:port/service_name');
其中,
hostname
是数据库所在服务器的名称或IP地址-该服务器不会是
localhost
,因为您说它不在您的电脑上
port
是侦听器端口,默认为1521,但也可以是其他端口(您可以在服务器上执行
lsnrctlstatus
检查);
service\u name
是数据库服务名称,它可能与SID相同,也可能与SID不同(您可以执行
lsnrctl services
查看服务器上的有效值)

如果您与同一数据库有SQL Developer连接,则主机名和端口将显示在连接设置中。它还可能显示服务名称,或者根据配置方式显示SID。服务名称和SID可能相同。(如果您不能运行
lsnrctl
,但有足够的权限,您可以尝试
从v$parameter中选择值,其中name='service\u names'
,但您可能无法看到该视图)。

。正如文档中提到的,由于您没有在您的环境中指定
TWO_TASK
LOCAL
,因此必须提供该连接字符串,以便PHP知道如何查找并连接到您的数据库

easy connect语法的一般模式是:

$conn = oci_connect('username', 'password', '//hostname:port/service_name');
其中,
hostname
是数据库所在服务器的名称或IP地址-该服务器不会是
localhost
,因为您说它不在您的电脑上
port
是侦听器端口,默认为1521,但也可以是其他端口(您可以在服务器上执行
lsnrctlstatus
检查);
service\u name
是数据库服务名称,它可能与SID相同,也可能与SID不同(您可以执行
lsnrctl services
查看服务器上的有效值)

如果您与同一数据库有SQL Developer连接,则主机名和端口将显示在连接设置中。它还可能显示服务名称,或者根据配置方式显示SID。服务名称和SID可能相同。(如果您不能运行
lsnrctl
,但有足够的权限,您可以尝试
从v$parameter中选择值,其中name='service\u names'
,但您可能无法看到该视图)。

。正如文档中提到的,由于您没有在您的环境中指定
TWO_TASK
LOCAL
,因此必须提供该连接字符串,以便PHP知道如何查找并连接到您的数据库

easy connect语法的一般模式是:

$conn = oci_connect('username', 'password', '//hostname:port/service_name');
其中,
hostname
是数据库所在服务器的名称或IP地址-该服务器不会是
localhost
,因为您说它不在您的电脑上
port
是侦听器端口,默认为1521,但也可以是其他端口(您可以在服务器上执行
lsnrctlstatus
检查);
service\u name
是数据库服务名称,它可能与SID相同,也可能与SID不同(您可以执行
lsnrctl services
查看服务器上的有效值)

如果您与同一数据库有SQL Developer连接,则主机名和端口将显示在连接设置中。它还可能显示服务名称,或者根据配置方式显示SID。服务名称和SID可能相同。(如果您不能运行
lsnrctl
,但有足够的权限,您可以尝试
从v$parameter中选择值,其中name='service\u names'
,但您可能无法看到该视图)。

。正如文档中提到的,由于您没有在您的环境中指定
TWO_TASK
LOCAL
,因此必须提供该连接字符串,以便PHP知道如何查找并连接到您的数据库

easy connect语法的一般模式是:

$conn = oci_connect('username', 'password', '//hostname:port/service_name');
其中,
hostname
是数据库所在服务器的名称或IP地址-该服务器不会是
localhost
,因为您说它不在您的电脑上
port
是侦听器端口,默认为1521,但也可以是其他端口(您可以在服务器上执行
lsnrctlstatus
检查);
service\u name
是数据库服务名称,它可能与SID相同,也可能与SID不同(您可以执行
lsnrctl services
查看服务器上的有效值)


如果您与同一数据库有SQL Developer连接,则主机名和端口将显示在连接设置中。它还可能显示服务名称,或者根据配置方式显示SID。服务名称和SID可能相同。(如果您不能运行
lsnrctl
,但有足够的权限,您可以尝试
从v$parameter中选择值,其中name='service\u names'
,但您可能无法看到该视图)。

您没有提供;如果您有意不提供环境变量,您是否按照文档中的说明设置了环境变量?您指的是哪些环境变量?我该如何设置它们?如果你是说甲骨文之家和TNS,我读到了