【问题标题】:PHP, IIS, Oracle (OCI) not workingPHP、IIS、Oracle (OCI) 不工作
【发布时间】:2015-02-02 09:46:42
【问题描述】:

我们正在从 Windows SBS 2011 迁移到 Windows Server 2012 R2。

我们有一个使用 PHP 连接到我们的 Oracle 数据库的内部网站。

我正在尝试将其迁移到新服务器,到目前为止我有:

  1. 已安装 IIS 服务器角色
  2. 已安装 PHP
  3. 已将 Oracle Instant Client 下载到 C:\instantclient
  4. 将 C:\instantclient 添加到 PATH 系统变量
  5. 将 php_oci8.dll 添加到 php.ini 并检查 PHP 是否实际使用了这个 php.ini
  6. 重启服务器

我仍然收到诸如 oci_ 命令未被识别等错误消息。

我迷路了。我在网上搜索过,说明与我从记忆中所做的相符。

我没有在网上找到一件我没有做过的事情。

【问题讨论】:

  • 所以phpinfo() 列出了oci8?
  • 那么有几种可能性。一是您的 DLL 不是针对您安装的 PHP 版本编译的。另一个是路径还是错的。
  • 我认为这更像是一个 Windows 的东西,因为即时客户端是相同的。我需要设置的只是 PATH 吗?
  • 它可能是(甚至一些 WAMP 堆栈也有这样的问题)。但是 PATH 应该可以工作msdn.microsoft.com/en-us/library/7d83bc18.aspx
  • 我肯定已经设置好了。它只是 PATH 还是有其他的?

标签: php oracle iis windows-server oracle-call-interface


【解决方案1】:

试试这个:

extension=php_oci8_12c.dll (而不是 php_oci8.dll)——这就是我正在使用的,你可能下载了和我一样的即时客户端。

【讨论】:

    【解决方案2】:

    根据您安装的 InstantClient 版本,您可能需要在路径中包含 bin 文件夹,如下所示:

    C:\instantclient\bin
    

    要检查路径中的 DLL 文件是否可用,请在命令提示符中输入 where oci*.dll。它应该返回匹配文件的列表。

    另外,请记住,仅仅因为您的帐户可以看到 DLL 文件并不意味着 IIS/PHP 可以。它在可能无权访问文件的不同帐户下运行。检查您的 IIS 错误日志和 PHP php_errors.log 文件以获取任何特定的错误消息。


    编辑

    经过相当长的chat,问题通过以下方式解决:

    • 将 InstantClient 从 10.1.0.5 更新到 10.2.0.5(如 module requirements 中所述:在 Windows 上,php_oci8 DLL 需要 10gR2 或更高版本的 Oracle 客户端库。
    • msvcr71.dll 的副本添加到 InstantClient 文件夹。
    • php.net 下载并手动配置PHP,而不是使用PHP Manager for IIS
    • 确保 Path 环境变量正确指向 InstantClient 和 PHP 文件夹。

    【讨论】:

    • 我的 Instant Client 中没有 \bin。唯一的 PHP 错误是找不到诸如oci_connect 之类的命令。
    • 无法加载 OCI 时的常见行为是 PHP 记录类似 PHP Startup: Unable to load dynamic library 'php_oci8_11g.dll' - The specified module could not be found. 的错误。这将明确告诉您存在启动错误。您是否确认oci*.dll 文件在路径中可用,并且 IIS 用户可以访问它们?
    • 是的,C:\instantclientoci*.dll 文件所在的位置)在 PATH 中,Everyone 作为测试具有完全访问权限。
    • 一切的“位”是否匹配? PHP (>=5.5) 和 InstantClient 提供 32 位或 64 位版本。它们需要相同,PHP 才能使用 oci*.dll 文件。
    • 是的,我在下载 Instant Client 时选择了 32 位,PHP 位于 C:\Program Files (x86)\PHP\v5.3 中(尽管 PHP 管理器 IIS 似乎位于 `C:\Program Files` 中)。
    猜你喜欢
    • 2011-07-10
    • 2011-10-27
    • 2017-02-27
    • 1970-01-01
    • 2021-08-28
    • 2017-04-26
    • 2011-11-19
    • 1970-01-01
    • 2020-01-21
    相关资源
    最近更新 更多