繁体   English   中英

oci_connect从命令行失败,但可在浏览器中使用

[英]oci_connect fails from command line but works in browser

我写了一个PHP脚本来作为cron作业运行,但它没有运行。 该脚本在浏览器中运行良好,但是当我从命令行运行该脚本时,我发现此错误:

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的新手,我没有直接访问数据库的权限,所以我不确定从那里去哪里。

谢谢。

“ EasyConnect”字符串

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=nrb)))

指本地主机。 “在浏览器中”可能表示: 在服务器上 (执行PHP脚本的位置)。

除非您在同一服务器的命令行上运行测试,否则应更改连接字符串以引用数据库服务器(它可能只是您的Web服务器的主机名)。

请注意可能会遇到的防火墙限制。 如果可能,最好使用公司的tnsnames.ora将数据库实例标识符解析为其连接字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM