我在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下运行?
答案 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。