PHP, IIS, Oracle (OCI) not working


PHP, IIS, Oracle (OCI) not working

我们正在从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 中添加了php_oci8.dll.ini并检查 PHP 是否确实在使用此 php.ini
  6. 重新启动的服务器

我仍然收到错误消息,例如无法识别oci_命令等。

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

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

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

C:'instantclient'bin

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

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

<小时 />

编辑

经过相当长的聊天,问题通过以下方式得到解决:

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

试试这个:

扩展名=php_oci8_12c.dll(而不是php_oci8.dll( - 这就是我正在使用的,您可能下载了与我相同的即时客户端。