繁体   English   中英

带有PHP7的OCI8-找不到模块

[英]OCI8 with PHP7 - module not found

我目前正在设置Windows 10 Pro x64计算机,以与Apache,PHP及其oci8扩展一起使用。 之前,我成功地使oci8可以在OSX 10.11和Windows 2012 Server上工作,所以我认为我知道该怎么做。 但这是32位-现在是64位。

现在安装的软件是:

  • Apache 2.4.18 x64
  • PHP 7.0.3 TS x64
  • Oracle Instant Client x64(instantclient-basic-windows.x64-12.1.0.2.0)
  • oci8 2.1.0 TS x64

我不明白。 错误消息是:

警告:PHP启动:无法加载动态库'ext \\ php_oci8_12c.dll--原始模块。 (找不到模块。)

在第0行的Unknown中

扩展名“ oci8”不存在。

我通过将其目录写入PATH变量来安装Oracle Instant Client,并将php_oci8_12c.dll文件复制到PHP ext dir,并取消注释了php.ini中的相应行。 那还不够吗?

我已经在Stackoverflow和其他网站上阅读过很多关于类似问题的文章,这些都是我尝试过的:

  • 将所有DLL移至C:\\ Windows \\ system32
  • 在PATH变量中包含PHP扩展目录
  • 重新检查每个组件都是64位
  • 创建了ORACLE_HOME和ORACLE_BASE变量(这不是必需的)

如果将php_oci8_12c.dll x64更改为32位,则会收到不同的错误消息:

警告:PHP启动:无法加载动态库'ext \\ php_oci8_12c.dll'-%1 ist keinezulässigeWin32-Anwendung。 (%1不是有效的Win32程序。)

在第0行的Unknown中

扩展名“ oci8”不存在。

有什么主意吗?

谢谢!

总结一下,

还有一件事... NTS假定PHP不能作为Apache模块运行,对吗? 您正在使用FastCGI吗? –ÁlvaroGonzález

是要走的路。 如果有人遇到麻烦,请按照以下确切步骤操作:

  • 来自Windows.php.net/download/的PHP 7.0.3 VC14 x64线程安全
  • 来自apachehaus.com/cgi-bin/download.plx的Apache 2.4.18 x64
  • 来自oracle.com/technetwork/topics/winx64soft-089540.html的Oracle Instant Client 12.1.0.2.0 x64
  • (从pecl.php.net/package/oci8获取当前的Thread Safe oci8 DLL,但是PHP附带了它的一个版本-与我一起使用)

将PHP作为Apache模块安装。 解压缩Instant Client并将其移动到所需的位置。 将此位置添加到您的PATH系统变量。 重新启动计算机,它应该显示在phpinfo()中的“ PATH”下。

然后,我必须使PHP extension_dir成为绝对路径。 因此没有'ext',而是'C:/ Program Files / php-7.0.3 / ext'。 在仅将“ ext”设置为extension_dir的情况下,我可以通过“ php.exe filename.php”连接到远程Oracle DB。 但是Apache会在error.log中向我抛出一个错误,它找不到DLL。

如果选择保留PHP附带的oci DLL,则不需要DLL复制。 无需更改/创建比PATH更多的环境变量。

至少在我的情况下:-)

暂无
暂无

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

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