我似乎对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 errorlog中看到了这些错误:
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变量(已经在那里)
我正在使用的软件版本:
有什么想法吗?
答案 0 :(得分:6)
似乎我想通了,可以回答我自己的问题。看起来XAMPP正在提供一个不合适的ddl及其发行版。 可以在这里下载所有可能的正确和最新的oci8 dll:http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/。一旦我得到了正确的,它就像一个魅力。
答案 1 :(得分:0)
XAMPP 附带 PHP 附带 ThreadSafe ,因此您必须从此目录下载文件:
http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/ ...
在将3个DLL粘贴到 C:\ xampp \ php \ ext *之前,请将“ .old *”附加到每个文件。确保您已根据文件 php.ini 中的Oracle数据库版本启用了良好的DLL。最后,重启Apache。