2012-04-18 16 views
1

我的項目的總體目標是連接到另一臺服務器上的Oracle數據庫,以便使用PHP查詢它,以便創建圖表使用JavaScript的數據。使用PHP/oci8連接到Oracle遠程數據庫 - 不確定如何使用監聽器

我的服務器運行CentOS的

到目前爲止,我已經跟着方向出在網絡上,並且已經安裝OCI8我的服務器和Oracle Insant客戶端上。

然後我創建了一個shell腳本來隧道到遠程服務器。

接下來,我創建了一個測試php文件,試圖連接到數據庫

<?php 
$conn = oci_connect('name', 'pw', 'servername/databasename'); 
if(!$conn){ 
     $e = oci_error(); 
     trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); 
} 

oci_close($conn); 

?> 

當我在我收到以下錯誤

警告瀏覽器加載此:oci_connect():ORA- 12541:TNS:第3行中的/var/www/html/djc/ociConnect.php中沒有監聽器致命錯誤:ORA-12541:TNS:第6行中的/var/www/html/djc/ociConnect.php中沒有監聽器

我已經完成了我對錯誤的研究,並且我知道主要問題是 lsnrctl start

不起作用,我沒有lsnrctl函數。我也沒有TNSNAMES.ORA或LISTENER.ORA文件。

我不知道如何讓lsnrctl在我的服務器上工作,或者我甚至從正確的角度來攻擊這個問題。

也試圖啓動sqlplus(我從rpm安裝),返回命令未找到。

有什麼建議嗎? 我甚至不確定是否要在正確的莊園中實現我的目標,所以任何幫助都非常感謝。

+0

沒有看到隧道正確創建。一旦我在另一個外殼中運行一個隧道,所有事情都會一起工作。 – 2012-04-20 18:35:18

回答

2

我用來與連接:

//Putenv("NLS_LANG=SPANISH_SPAIN.WE8ISO8859P15"); 
$db="(DESCRIPTION= 
    (ADDRESS_LIST= 
     (ADDRESS=(PROTOCOL=TCP) 
     (HOST=$GLOBALS[dbhost])(PORT=$GLOBALS[dbport]) 
     ) 
    ) 
     (CONNECT_DATA=(SID=$GLOBALS[dbname])) 
)"; 
$conn = OCILogon($GLOBALS['dbuser'],$GLOBALS['dbpasswd'],$db); 

替換$ GLOBALS [ 'DBUSER'],$ GLOBALS [ 'dbpasswd'],$ GLOBALS [DBHOST],$ GLOBALS [DBNAME] $ GLOBALS [dbport ]。

相關問題