我们正在从Windows SBS 2011迁移到Windows Server 2012 R2。
我们有一个内部网站,使用PHP连接到我们的Oracle数据库。
我正在尝试将其迁移到新服务器,到目前为止,我有:
- 已安装的 IIS 服务器角色
- 已安装的 PHP
- 已将 Oracle Instant Client 下载到 C:''instantclient
- 将 C:''instantclient 添加到 PATH 系统变量
- 在 php 中添加了php_oci8.dll.ini并检查 PHP 是否确实在使用此 php.ini
- 重新启动的服务器
我仍然收到错误消息,例如无法识别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( - 这就是我正在使用的,您可能下载了与我相同的即时客户端。