php_oci8_11g.dll不是有效的Win32应用程序
这个话题已经被问了好几次了,但是我的机器上并没有任何解决方案 我正在尝试将windows 7与10G oracle dabatase连接,但未加载oci扩展。以下是一些事实:php_oci8_11g.dll不是有效的Win32应用程序,php,oracle,windows-7,php-5.6,Php,Oracle,Windows 7,Php 5.6,这个话题已经被问了好几次了,但是我的机器上并没有任何解决方案 我正在尝试将windows 7与10G oracle dabatase连接,但未加载oci扩展。以下是一些事实: C:\php>php-m PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u oci8\u 11g.dll”-%1不是有效的Win32应用程序 C:\php>php-v PHP 5.6.19 (cli) (built: Mar 2 2016 20:09:42) Copyright (c) 1997-
C:\php>php-m
PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u oci8\u 11g.dll”-%1不是有效的Win32应用程序
C:\php>php-v
PHP 5.6.19 (cli) (built: Mar 2 2016 20:09:42)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
- 64x架构
- TS VC11
C:\>tnspinglocaldb
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-AUG-2
016 22:37:50
故障排除
- 我正在使用。将它们放入
折叠中。其余的extension加载得非常好ext/
- PATH变量包含ORACLE_HOME和php路径
- 刚刚查找了所需的oracle dll文件,它们位于:
C:\>其中oci*
C:\oracle\product\10.2.0\db_2\BIN\oci.dll C:\oracle\product\10.2.0\db_2\BIN\ocijdbc10.dll C:\oracle\product\10.2.0\db_2\BIN\ociw32.dll
- Oracle客户端在我这边不是必需的,因为数据库安装在同一台计算机上,并且它安装了所有必需的库
我还缺什么?提前谢谢你几个月后我找到了解决方案。考虑下面的基础设施:
- Windows Server 2012 R2标准版x64
- Apache/2.4.18(Win64)VC11
- PHP 5.6.19 x86 VC11 TS
- 无论您的服务器是x64还是x86体系结构,都必须以32位下载它
- 正如您所注意到的,PHP是在VC11中编译的,因此您必须下载带有VC11源代码的OIC,这可以通过解压缩下载的文件并检查是否有文件夹VC11来确认
这两个细节都非常重要。一旦我满足了这两个要求,错误就消失了。现在我可以通过PHP成功连接到Oracle
Zend Extension Build
的值中找到TS
,则使用线程安全(TS)版本的PHP
如果在Zend Extension Build
的值中找到NTS
,则使用非线程安全(NTS)版本的PHP
下载
列中的Windows图标的DLL
链接2.0.12
对于PHP7.0,它的版本是2.1.8
对于PHP7.1、7.2、7.3,其版本为2.2.0
然后,继续下载与您的PHP版本和体系结构对应的归档文件:如果您使用PHP7.2 x86 TS,请下载相应的文件:7.2线程安全(TS)x86
ext
文件夹中解压缩下载的文件。用新文件替换旧文件php.ini
文件中添加以下行:
ext=php\u oci8\u 11g.dll
如果安装了Oracle 12c,则需要在php.ini
文件中添加以下行:
ext=php\u oci8\u 12c.dll
注意:同时只能启用3个可用PCP OCI8扩展中的一个。如果有多行以
ext=php\u oci8
开头,请检查是否只启用了一行。禁用的行以分号开头。如果发现多行,请删除或注释该行(在该行开头添加分号)。您声明PHP为x64,但您的Oracle安装是什么?“比特数”需要匹配。遇到类似问题,但即使遵循您的解决方案,仍会收到相同的错误消息。但我使用的是Windows10,如果你的PHP是NTS(非线程安全),你也必须使用OCI8NTS。同样适用于TS。使用php-v
来显示此信息。回答。这对我帮助很大。非常感谢。
<?php echo PHP_INT_SIZE; ?>
<?php phpinfo(); ?>