views:

257

answers:

1

I'm deploying a PHP application that connects to an Oracle 9i server using the OCI8 functions. I've installed the latest official binaries for Windows (PHP/5.3.2) in order to run it as Apache 2.2 module (i.e., the VB6+ts MSI installer). However, the OCI8 extension is no longer in the extension list: the only options to choose from are Oracle (10) and Oracle (11g).

The PHP manual says nothing about OCI8 being deprecated. Furthermore, there're no references to any Oracle 10 or 11 extensions :-?

Has OCI8 been renamed? What are those other extensions?

+1  A: 

The archive php-5.3.2-Win32-VC6-x86.zip from windows.php.net contains two oci8 module dlls, php_oci8.dll and php_oci8_11g.dll. You need either the 10g or 11g client for those to work.
http://docs.php.net/manual/en/oci8.requirements.php says:

On Windows, OCI8 needs client libraries from version 10gR2 or greater. With some versions of Instant Client you may additionally need mfc71.dll and msvcr71.dll libraries.
[...]
Note: If OCI8 uses 9iR2 or 10g client libraries, then PHP can connect to Oracle Database 8i, 9iR2, 10g or 11g. If OCI8 uses 11g client libraries, the database can be 9iR2, 10g or 11g.
VolkerK
It is a naming issue in the MSI installer, isn't it? I'll check the DLLs you mention and report back.
Álvaro G. Vicario
In case the installer really doesn't contain those dlls you can still download the zip archive, extract those two files to the ext/ directory of you php installation and then edit the php.ini so php loads the modules.
VolkerK
I presume the bundled DLLs are correct, since they start with `php_oci8_`. Now, Apache crashes on start, but that's another story...
Álvaro G. Vicario