PHP:pdo_oci驱动程序在apache下不起作用,但可以在控制台上运行

时间:2017-01-29 06:32:22

标签: php oracle pdo oci

我在PHP PDO和Oracle方面遇到了非常令人费解的情况。我'米 在Centos 7上运行。我的脚本在Apache下获取错误 "错误:找不到驱动程序"但是脚本从命令行运行正常。

当我运行测试脚本以列出驱动程序时,从命令行:

foreach(PDO :: getAvailableDrivers()为$ driver)         echo $ driver,'
'," \ n";

它返回:

  

mysql
oci
pgsql
sqlite

但是在apache下运行时,oci丢失了:

  

mysql
pgsql
sqlite

要添加到这个谜团,运行phpinfo()显示在该部分中 "解析了附加的.ini文件" /etc/php.d/pdo_oci.ini的条目(适用于控制台和apache)。

关于为什么oci驱动程序在脚本时没有出现的任何想法 在apache下运行?

1 个答案:

答案 0 :(得分:1)

我"解决了#34;这个问题是通过使用Oracle安装配置让它工作。我安装了Instant Client,并且让PHP在命令行和apache下识别oci模块(使用./configure构建pdo_oci --with-pdo-oci = instantclient,/ usr,11.2)

未识别的TNS_ADMIN值存在进一步的问题。我通过使用Oracle连接的替代PDO DSN规范解决了这个问题:

  

OCI:DBNAME = // HOST [:PORT] / SERVICE_NAME

感谢任何有足够的时间花在这上面的人。与许多与Oracle相关的经历一样,这让我想起了为什么我会使用Postgres。