工作我寫了一個PHP腳本作爲cron作業運行,並且它沒有運行。該腳本在瀏覽器中工作得很好,但我發現,當我從我得到這個錯誤在命令行中運行它:oci_connect命令行失敗,但在瀏覽器
Warning: oci_connect(): ORA-12154: TNS:could not resolve the connect identifier specified in /usr/apps/webdata/cron/PropogateDB.php on line 190
有問題的線路是:
$conn_NRB = oci_connect($user, $pass, "nrb.njbbnrbpd1");
正如我所說的這個腳本在瀏覽器中正常工作。
我做了一些挖了一圈,發現數據庫的配置設置。那麼我想這:
$conn_NRB = oci_connect($user, $pass, "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=nrb)))");
有了這個代碼,這兩個命令行和瀏覽器給我這個錯誤:
Warning: oci_connect() [function.oci-connect]: ORA-01017: invalid username/password; logon denied in /usr/apps/webdata/cron/PropogateDB.php on line 191
據我所知,沒有其他的用戶名,我也可以使用密碼。 (我試圖現在驗證)
我在這個網站上搜索了周圍,發現了一個類似問題的人,儘管他的問題被顛倒了,他的原因是命令行和瀏覽器指向了兩個不同的php.ini文件。我剛剛確認瀏覽器和命令行都調用了相同的php.ini文件。它們都指向:
Configuration File (php.ini) Path => /usr/local/php/lib
是否有其他的原因,一個腳本會在瀏覽器中工作,但在命令行中失敗?我對Oracle SQL相對比較陌生,並且我沒有直接訪問數據庫的權限,所以我不知道該從哪裏下載。
謝謝。
命令行和瀏覽器都連接到同一臺機器。 我試圖改變「localhost」改成「nrb.njbbnrbpd1」,這是無法解決的連接。 (有可能是一個不同的名字,我有使用。我不知道。) – user1672174
@ user1672174的一點是,瀏覽器不執行PHP。服務器確實(查看地址欄)。這可能不會是同一臺機器 – sehe
我很確定它是同一臺機器。瀏覽器中腳本的地址是http://nrbdev/cron/PropogateDB.php。當我通過PuTTY連接時,我在主機名字段中輸入「nrbdev」。然後,我可以通過命令行導航到/ usr/apps/webdata/cron,執行目錄列表,並查看列出的PropogateDB.php。除非我錯過了它是同一臺機器。但是,這確實給了我一個想法。如果數據庫位於不同的機器上,localhost會失敗,對吧?如果情況如此,它是否仍然可以通過瀏覽器使用上面的代碼工作? – user1672174