duanbeng6709 2015-01-05 06:18
浏览 87
已采纳

如何在win7 x64上使用带有php(xampp)的oracle客户端11.2

I just installed an acutal XAMPP on my win7 (x64) PC to write some PHP scripts to connect to an oracle DB. I also have a normal oracle 11.2.0 client installed (PATH and ORACLE_HOME are set correctly). The client is used for all my other work without any problems.

When I try to connect to an oracle DB PHP fails with Fatal error: Call to undefined function oci_connect() in. I remember I had to enable the "oci8-extensions" in my php.ini when I did the same thing some years ago on a x32 winXP PC. But my current xampp does not have these dll in the php/ext folder (only a php_oci8_12c.dll which throws several errors of unknown functions on apache start and which is for oracle 12 and not 11) and the php.ini also says they are only needed for the instant client.

;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

Also this SO-questions shows that using the comment extension with a normal client will not work (which I also tried).

I tried to google for a solution but all "solutions" are "install win32 instant client and enable extension". But I can`t do this as most of my QA-work requires the installed and configured 11.2.0-client and I don't have the .dll in my php/ext-folder anyway

I also tried to copy the ociw32.dll from the client/bin folder to the php/ext-folder but then apache says it's not an PHP-library.

So how can I enable PHP oracle libraries to use oci8 for XAMPP on x64 win7 WITHOUT installing win32 Oracle Instant Client and destroying my current setting?

edit: I also tried the steps described in the PHP: Installation Manual (Post of: samantha dot vincent at gmail dot com) including changing my apache-http.conf which also didn't help.

I'm also confused of my phpinfo()-Output as it says

Configure Command   "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
  • 写回答

1条回答 默认 最新

  • dpd3447 2015-01-05 08:44
    关注

    I finally found a solution:

    I downloaded the actual OCI-DLLs from "PECL :: PAckage :: oci8 :: 2.0.8" (in my case the 32bit, threadsafe DLL) and then removed the ; from this line

    ;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
    

    I also added the following lines to my http.conf of apache

    SetEnv ORACLE_BASE "C:/oracle/"
    SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"  
    

    After that I restarted apache, made sure that my connection-alias is probably placed in my tsnames.ora and then I could use the oci8-functions witout any problems.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog