【问题标题】:PHP OCI8 extensions not working with PHP 7 64 bitPHP OCI8 扩展不适用于 PHP 7 64 位
【发布时间】:2017-02-01 13:14:53
【问题描述】:

我已经安装了 APACHE 2.4 x64 和 PHP7 x64 并下载了 PHP OCI 64 位库,但问题是每当我从 cli 运行 PHP 脚本时,它都会显示

PHP 启动:无法加载动态库 'E:\software\server\php-7.0.11-Win32-VC14-x64\ext\php_oci8_11g.dll' - %1 不是有效的 Win32 应用程序

当我从它说的 URL 调用 web 应用程序时

调用未定义函数 oci_pconnect()

我下载的OCI扩展也是64位的。这是链接:

http://windows.php.net/downloads/pecl/releases/oci8/2.1.2/php_oci8-2.1.2-7.0-ts-vc14-x64.zip

谁能指导一下这个问题。

【问题讨论】:

  • 我不使用 Oracle,但我运行相同的 WAMP 版本,所以我像你一样测试了 v2.1.2 和 v2.1.1,两者都不会加载。似乎 DLL 很糟糕。
  • php5 和 php7 不兼容,因此请确保您的 php_oci.dll 是为 php7 制作的。注意:您可以先使用独立的 PHP (PHP.EXE) 开始测试,而不使用 Apache。

标签: php windows oracle oracle-call-interface


【解决方案1】:

您可能混合了 TS(线程安全)和 NTS(非线程安全)版本。这些不会一起工作。详细了解 PHP 线程安全here

PHP 7.0.11 NTS x64、OCI8 2.1.2 NTS x64 和 InstantClient 11.2.0.4.0 x64 可以完美地协同工作(我刚刚下载了这三个文件并在新的 Win2K8 环境中对其进行了测试)。

记得安装最新的 VC14 运行时 (Visual Studio 2015) 并修改您的 PATH 系统环境变量以包含 PHP 和 InstantClient 的目录,例如C:\php;C:\instantclient_11_2.

【讨论】:

  • 我使用了线程安全包。发现问题出在 Instant client 文件上。通过将 Instantclient 的所有文件复制到 c:\windows 和 c:\windows\system32 目录中来解决。您在环境变量中指定其路径的评论更有意义。我会试一试。谢谢
  • 我有同样的问题,但我的问题并不能通过复制 c:\windows 和 c:\windows\system32 目录中的文件来解决。请检查我的问题stackoverflow.com/questions/46640455/…
猜你喜欢
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多