php: 加载 oracle 驱动程序出错 "Unable to load dynamic library - The specified procedure could not be found."
php: loading oracle driver gives error "Unable to load dynamic library - The specified procedure could not be found."
我似乎对 PHP 有一个奇怪的问题。
我已经将一堆软件从一台服务器迁移到另一台服务器。在服务器上,一些脚本与 Oracle 建立连接,因此为了能够建立连接,安装了 oracle 客户端并准备了一个 tnsnames 文件。来自 sql*plus 的连接有效。
一些脚本使用 PDO,因此我在 php.ini 中启用了 extension=php_pdo_oci.dll。这些脚本很有魅力。
其他一些脚本使用像 oci_connect 这样的函数,这些需要像 php_oci8.dll 这样的扩展。使用 xammp(我用作 apache/php/mysql 捆绑包)php_oci8_12c.dll 已交付,所以我认为扩展就足够了。
启动服务器时,我在 php 错误日志中看到这些错误:
Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_12c.dll' - The specified procedure could not be found.
该文件位于 C:\xampp\php\ext\,所以这应该不是问题。同一目录中的其他扩展可以毫无问题地获取。我也尝试加载 php_oci8.dll,这是我从旧服务器上获取的,但遇到了完全相同的问题。
我发现了一些我尝试但没有成功的类似问题的答案:
- 将 dll 复制到 c:\windows\system
- 将 php ext 目录添加到系统 PATH 变量
- 将 oracle 客户端添加到系统 PATH 变量(已经在那里)
我使用的软件版本:
- OS: Windows 2012 R2 x64
- PHP: 5.6.3
- 甲骨文数据库:11.2.0.4.0
有什么想法吗?
看来我明白了,可以回答我自己的问题了。看起来 XAMPP 在他们的发行版中提供了一个不合适的 ddl。
正确的和最新的 oci8 dll 可以在这里以所有可能的方式下载:http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/。一旦我找到合适的,它就像一个魅力。
XAMPP 随 PHP 一起编译 ThreadSafe , 所以你必须从这个目录下载文件:
http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/ …
在将 3 个 DLL 粘贴到 C:\xampp\php\ext* 之前,将“.old*”附加到每个文件。请确保根据您的 Oracle 数据库版本在文件 php.ini 中启用了正确的 DLL。最后,重启 Apache。
我似乎对 PHP 有一个奇怪的问题。
我已经将一堆软件从一台服务器迁移到另一台服务器。在服务器上,一些脚本与 Oracle 建立连接,因此为了能够建立连接,安装了 oracle 客户端并准备了一个 tnsnames 文件。来自 sql*plus 的连接有效。
一些脚本使用 PDO,因此我在 php.ini 中启用了 extension=php_pdo_oci.dll。这些脚本很有魅力。
其他一些脚本使用像 oci_connect 这样的函数,这些需要像 php_oci8.dll 这样的扩展。使用 xammp(我用作 apache/php/mysql 捆绑包)php_oci8_12c.dll 已交付,所以我认为扩展就足够了。
启动服务器时,我在 php 错误日志中看到这些错误:
Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_12c.dll' - The specified procedure could not be found.
该文件位于 C:\xampp\php\ext\,所以这应该不是问题。同一目录中的其他扩展可以毫无问题地获取。我也尝试加载 php_oci8.dll,这是我从旧服务器上获取的,但遇到了完全相同的问题。
我发现了一些我尝试但没有成功的类似问题的答案: - 将 dll 复制到 c:\windows\system - 将 php ext 目录添加到系统 PATH 变量 - 将 oracle 客户端添加到系统 PATH 变量(已经在那里)
我使用的软件版本:
- OS: Windows 2012 R2 x64
- PHP: 5.6.3
- 甲骨文数据库:11.2.0.4.0
有什么想法吗?
看来我明白了,可以回答我自己的问题了。看起来 XAMPP 在他们的发行版中提供了一个不合适的 ddl。 正确的和最新的 oci8 dll 可以在这里以所有可能的方式下载:http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/。一旦我找到合适的,它就像一个魅力。
XAMPP 随 PHP 一起编译 ThreadSafe , 所以你必须从这个目录下载文件:
http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/ …
在将 3 个 DLL 粘贴到 C:\xampp\php\ext* 之前,将“.old*”附加到每个文件。请确保根据您的 Oracle 数据库版本在文件 php.ini 中启用了正确的 DLL。最后,重启 Apache。