Oracle OCI not starting on php 5 windows server 2003sp2 IIS 6

Posted on 2009-12-30
Last Modified: 2013-12-19
I inherited a task a task to start up a PHP server on a wintel box.  I'm not a php or unix kind of guy.  Basically I have Php installed and running phpinfo() works fine.
I cannot get the php_oci8.dll to load and it is needed for a project.
Full oracle 9i client installed.
I can sqlplus myuser/mypwd@mydb successfully.

I have the error going to the system log and it error says
Event Type:      Information
Event Source:      PHP-5.2.12
Event Category:      (6)
Event ID:      2
Date:            12/30/2009
Time:            8:43:31 AM
User:            N/A
The description for Event ID ( 2 ) in Source ( PHP-5.2.12 ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: php[35068], PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\php5\ext\php_oci8.dll' - The specified procedure could not be found.
 in Unknown on line 0.

I enabled php_ldap.dll in the php.ini file and it shows up in phpinfo() so I'm pretty confident that my ini is ok.  I'm thinking that the pho_oci8.dll is not finding what it needs from oracle and failing to start up.

Parts of my php.ini file
; Directory in which the loadable extensions (modules) reside.
extension_dir = "c:\php5\ext"
; Windows Extensions

Env variables:
C:\oracle\ora92\bin;C:\ColdFusion8\verity\k2\_nti40\bin;C:\CFusionMX7\verity\k2\_nti40\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\php5;

Running php 5.2.12  ISAPI


I have not loaded PECL as I'm not quite sure what that is or how to do it in windows world or if I need it.

Question by:E43509
    LVL 48

    Expert Comment


    Installing OCI8 on Windows

    On Windows, uncomment the php.ini line extension=php_oci8.dll when using Oracle 10gR2 client libraries. Uncomment extension=php_oci8_11g.dll when using Oracle 11g client libraries. These two DLLs contain equivalent functionality and only one may be enabled at a time. Make sure extension_dir is set to the directory containing the PHP extension DLLs.

    If using Instant Client, set the system PATH environment variable to the Oracle library directory.

    Author Comment

    Not using instant client, full oracle 9i client.
    The php_oci8.dll is uncommented.
    extension_dir appears to be set right (as I can enable other windows extensions such as php_ldap.dll and they start up.

    Author Comment

    Another tidbit.  Running c:\php5> php -m comes up with an error.
    Php.exe  entry point not found
    The procedure entry point OCILobRead2 could not be located in the dynamic link library oci.dll

    I found the oci.dll in my c:\oracle\ora92\bin  
    I copied that oci.dll to c:\windows\system32, c:\php5, c:\php5\ext and the same error occurs.

    I'm thinking that php is finding the oci.dll but not that procedure in it?
    Next steps?

    Author Comment

    I only have one oci.dll on this machine.  I renamed it to oci_orig.dll and running php -m came up with the same error.  I'm thinking it can't find the oci.dll?

    Accepted Solution

    sorry to keep adding comments but as I come across items.
    I downloaded the oracle 10g instant client.
    Set up the env (I believe correctly)

    i40\bin;C:\CFusionMX7\verity\k2\_nti40\bin;C:\Program Files\Oracle\jre\1.3.1\bin
    ;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS

    and voila!  It is now working.
    It appears that the oci.dll from oracle 9 is not a good match for the php_oci8.dll.
    I found some threads on that:


    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    Join & Write a Comment

    Suggested Solutions

    How to Create User-Defined Aggregates in Oracle Before we begin creating these things, what are user-defined aggregates?  They are a feature introduced in Oracle 9i that allows a developer to create his or her own functions like "SUM", "AVG", and…
    Background In several of the companies I have worked for, I noticed that corporate reporting is off loaded from the production database and done mainly on a clone database which needs to be kept up to date daily by various means, be it a logical…
    This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.
    This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

    733 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now