]> granicus.if.org Git - php/commitdiff
Generate pdo_oci.dll for modern SDKs and pdo_oci8.dll for ye-olde oci805 libs.
authorWez Furlong <wez@php.net>
Thu, 20 Jan 2005 03:33:17 +0000 (03:33 +0000)
committerWez Furlong <wez@php.net>
Thu, 20 Jan 2005 03:33:17 +0000 (03:33 +0000)
I'm told that oci805 is required for connectivity to oci805 servers, which are
no longer supported in more recent SDK releases.

Edin: please grab:

http://download.oracle.com/otn/nt/instantclient/instantclient-basic-win32-10.1.0.3-20050113.zip
http://download.oracle.com/otn/nt/instantclient/instantclient-sdk-win32-10.1.0.3-20050113.zip

and extract them under php_build, so that you end up with php_build/instantclient10_1

ext/pdo_oci/config.w32
ext/pdo_oci/oci_statement.c

index a1d3a25a3067fbeaa7b112ee683d63f5782f3d5c..1f951b0de9d278df8dd4f8fcb5bbe50f847ce349 100755 (executable)
@@ -5,35 +5,37 @@ ARG_WITH("pdo-oci", "Oracle OCI support for PDO", "no");
 
 if (PHP_PDO_OCI != "no") {
 
-       php_oci_dirs = new Array(
+       pdo_oci_dirs = new Array(
                PHP_PDO_OCI,
                PHP_PDO_OCI + "\\oci",
-               PHP_PHP_BUILD + "\\oci92",
-               PHP_PHP_BUILD + "\\oci805"
+               PHP_PHP_BUILD + "\\instantclient10_*\\sdk",
+               PHP_PHP_BUILD + "\\oci92"
        );
 
-       php_oci_lib_paths = "";
-       php_oci_inc_paths = "";
+       pdo_oci_lib_paths = "";
+       pdo_oci_inc_paths = "";
 
        // find the oracle install
-       for (i = 0; i < php_oci_dirs.length; i++) {
-               php_oci_lib_paths += php_oci_dirs[i] + "\\lib;";
-               php_oci_lib_paths += php_oci_dirs[i] + "\\lib\\msvc;";
-               php_oci_inc_paths += php_oci_dirs[i] + "\\include;";
+       for (i = 0; i < pdo_oci_dirs.length; i++) {
+               pdo_oci_lib_paths += pdo_oci_dirs[i] + "\\lib;";
+               pdo_oci_lib_paths += pdo_oci_dirs[i] + "\\lib\\msvc;";
+               pdo_oci_inc_paths += pdo_oci_dirs[i] + "\\include;";
        }
 
-       pdo_oci_header = CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_PDO_OCI", php_oci_inc_paths);
+       pdo_oci_header = CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_PDO_OCI", pdo_oci_inc_paths, null, null, true);
+
+       if (pdo_oci_header && CHECK_LIB("oci.lib", "pdo_oci", pdo_oci_lib_paths)) {
 
-       if (pdo_oci_header && CHECK_LIB("oci.lib", "pdo_oci", php_oci_lib_paths)) {
+               pdo_oci_inc_dir = FSO.GetParentFolderName(pdo_oci_header);
 
                EXTENSION('pdo_oci', 'pdo_oci.c oci_driver.c oci_statement.c');
                ADD_FLAG('CFLAGS_PDO_OCI', "/I ..\\pecl");
 
                /* probe for some functions not present in older versions */
                pdo_oci_inc_dir = FSO.GetFolder(pdo_oci_header);
-               CHECK_FUNC_IN_HEADER('oci.h', 'OCIEnvCreate', pdo_oci_inc_dir);
-               CHECK_FUNC_IN_HEADER('oci.h', 'OCIStmtFetch2', pdo_oci_inc_dir);
-               CHECK_FUNC_IN_HEADER('ociap.h', 'OCIEnvNlsCreate', pdo_oci_inc_dir);
+               CHECK_FUNC_IN_HEADER('oci.h', 'OCIEnvCreate', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI');
+               CHECK_FUNC_IN_HEADER('ociap.h', 'OCIStmtFetch2', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI');
+               CHECK_FUNC_IN_HEADER('ociap.h', 'OCIEnvNlsCreate', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI');
 
        } else {
                WARNING("pdo-oci not enabled; libraries and headers not found");
@@ -41,3 +43,41 @@ if (PHP_PDO_OCI != "no") {
        ADD_EXTENSION_DEP('pdo_oci', 'pdo');
 }
 
+ARG_WITH("pdo-oci8", "Oracle OCI 8 (only) support for PDO", "no");
+
+if (PHP_PDO_OCI8 != "no") {
+       pdo_oci_dirs = new Array(
+               PHP_PDO_OCI,
+               PHP_PHP_BUILD + "\\oci805"
+       );
+
+       pdo_oci_lib_paths = "";
+       pdo_oci_inc_paths = "";
+
+       // find the oracle install
+       for (i = 0; i < pdo_oci_dirs.length; i++) {
+               pdo_oci_lib_paths += pdo_oci_dirs[i] + "\\lib;";
+               pdo_oci_lib_paths += pdo_oci_dirs[i] + "\\lib\\msvc;";
+               pdo_oci_inc_paths += pdo_oci_dirs[i] + "\\include;";
+       }
+
+       pdo_oci_header = CHECK_HEADER_ADD_INCLUDE("oci.h", "CFLAGS_PDO_OCI8", pdo_oci_inc_paths, null, null, true);
+
+       if (pdo_oci_header && CHECK_LIB("oci.lib", "pdo_oci8", pdo_oci_lib_paths)) {
+               pdo_oci_inc_dir = FSO.GetParentFolderName(pdo_oci_header);
+
+               EXTENSION('pdo_oci8', 'pdo_oci.c oci_driver.c oci_statement.c', null, null, null, "ext\\pdo_oci8");
+               ADD_FLAG('CFLAGS_PDO_OCI8', "/I ..\\pecl");
+
+               /* probe for some functions not present in older versions */
+               pdo_oci_inc_dir = FSO.GetFolder(pdo_oci_header);
+               CHECK_FUNC_IN_HEADER('oci.h', 'OCIEnvCreate', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI8');
+               CHECK_FUNC_IN_HEADER('ociap.h', 'OCIStmtFetch2', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI8');
+               CHECK_FUNC_IN_HEADER('ociap.h', 'OCIEnvNlsCreate', pdo_oci_inc_dir, 'CFLAGS_PDO_OCI8');
+
+       } else {
+               WARNING("pdo-oci8 not enabled; libraries and headers not found");
+       }
+       ADD_EXTENSION_DEP('pdo_oci8', 'pdo');
+}
+
index e8550c8e2e5b9dfadebf2be6e102289012c272fb..fb7ff5172b50171f6813409ea20054e0cd38bd7c 100755 (executable)
@@ -186,7 +186,7 @@ static sb4 oci_bind_output_cb(dvoid *ctx, OCIBind *bindp, ub4 iter, ub4 index, d
        Z_STRLEN_P(param->parameter) = param->max_value_len;
        Z_STRVAL_P(param->parameter) = emalloc(Z_STRLEN_P(param->parameter)+1);
 
-       
+       P->actual_len = Z_STRLEN_P(param->parameter);   
        *alenpp = &P->actual_len;
        *bufpp = Z_STRVAL_P(param->parameter);
        *piecep = OCI_ONE_PIECE;