From: Wez Furlong Date: Thu, 20 Jan 2005 03:33:17 +0000 (+0000) Subject: Generate pdo_oci.dll for modern SDKs and pdo_oci8.dll for ye-olde oci805 libs. X-Git-Tag: RELEASE_0_2~229 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84aa9020159ad124b0fc658ede5734038d9b6ae5;p=php Generate pdo_oci.dll for modern SDKs and pdo_oci8.dll for ye-olde oci805 libs. 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 --- diff --git a/ext/pdo_oci/config.w32 b/ext/pdo_oci/config.w32 index a1d3a25a30..1f951b0de9 100755 --- a/ext/pdo_oci/config.w32 +++ b/ext/pdo_oci/config.w32 @@ -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'); +} + diff --git a/ext/pdo_oci/oci_statement.c b/ext/pdo_oci/oci_statement.c index e8550c8e2e..fb7ff5172b 100755 --- a/ext/pdo_oci/oci_statement.c +++ b/ext/pdo_oci/oci_statement.c @@ -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;