sixd Mon, 07 Nov 2011 20:10:41 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=318888
Log: Improve OCI8 NLS env creation error messages (#58925) Bug: https://bugs.php.net/58925 (Assigned) No error information available when php_oci_create_env fails Changed paths: U php/php-src/branches/PHP_5_3/ext/oci8/oci8.c U php/php-src/branches/PHP_5_3/ext/oci8/package.xml U php/php-src/branches/PHP_5_4/ext/oci8/oci8.c U php/php-src/branches/PHP_5_4/ext/oci8/package.xml U php/php-src/trunk/ext/oci8/oci8.c U php/php-src/trunk/ext/oci8/package.xml Modified: php/php-src/branches/PHP_5_3/ext/oci8/oci8.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/oci8/oci8.c 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/branches/PHP_5_3/ext/oci8/oci8.c 2011-11-07 20:10:41 UTC (rev 318888) @@ -2901,11 +2901,20 @@ PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIEnvNlsCreate, (&retenv, OCI_G(events) ? PHP_OCI_INIT_MODE | OCI_EVENTS : PHP_OCI_INIT_MODE, 0, NULL, NULL, NULL, 0, NULL, charsetid, charsetid)); if (OCI_G(errcode) != OCI_SUCCESS) { + sb4 ora_error_code = 0; + text ora_msg_buf[OCI_ERROR_MAXMSG_SIZE]; /* Use traditional smaller size: non-PL/SQL errors should fit and it keeps the stack smaller */ + #ifdef HAVE_OCI_INSTANT_CLIENT php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that " PHP_OCI8_LIB_PATH_MSG " includes the directory with Oracle Instant Client libraries"); #else php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and " PHP_OCI8_LIB_PATH_MSG " are set and point to the right directories"); #endif + if (retenv + && OCIErrorGet(retenv, (ub4)1, NULL, &ora_error_code, ora_msg_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS + && *ora_msg_buf) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ora_msg_buf); + } + return NULL; } return retenv; Modified: php/php-src/branches/PHP_5_3/ext/oci8/package.xml =================================================================== --- php/php-src/branches/PHP_5_3/ext/oci8/package.xml 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/branches/PHP_5_3/ext/oci8/package.xml 2011-11-07 20:10:41 UTC (rev 318888) @@ -47,6 +47,7 @@ <license uri="http://www.php.net/license">PHP</license> <notes> Increased maximum possible Oracle DB error message length + Improve internal initalization failure error messages </notes> <contents> <dir name="/"> Modified: php/php-src/branches/PHP_5_4/ext/oci8/oci8.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/oci8/oci8.c 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/branches/PHP_5_4/ext/oci8/oci8.c 2011-11-07 20:10:41 UTC (rev 318888) @@ -2901,11 +2901,20 @@ PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIEnvNlsCreate, (&retenv, OCI_G(events) ? PHP_OCI_INIT_MODE | OCI_EVENTS : PHP_OCI_INIT_MODE, 0, NULL, NULL, NULL, 0, NULL, charsetid, charsetid)); if (OCI_G(errcode) != OCI_SUCCESS) { + sb4 ora_error_code = 0; + text ora_msg_buf[OCI_ERROR_MAXMSG_SIZE]; /* Use traditional smaller size: non-PL/SQL errors should fit and it keeps the stack smaller */ + #ifdef HAVE_OCI_INSTANT_CLIENT php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that " PHP_OCI8_LIB_PATH_MSG " includes the directory with Oracle Instant Client libraries"); #else php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and " PHP_OCI8_LIB_PATH_MSG " are set and point to the right directories"); #endif + if (retenv + && OCIErrorGet(retenv, (ub4)1, NULL, &ora_error_code, ora_msg_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS + && *ora_msg_buf) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ora_msg_buf); + } + return NULL; } return retenv; Modified: php/php-src/branches/PHP_5_4/ext/oci8/package.xml =================================================================== --- php/php-src/branches/PHP_5_4/ext/oci8/package.xml 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/branches/PHP_5_4/ext/oci8/package.xml 2011-11-07 20:10:41 UTC (rev 318888) @@ -47,6 +47,7 @@ <license uri="http://www.php.net/license">PHP</license> <notes> Increased maximum possible Oracle DB error message length + Improve internal initalization failure error messages </notes> <contents> <dir name="/"> Modified: php/php-src/trunk/ext/oci8/oci8.c =================================================================== --- php/php-src/trunk/ext/oci8/oci8.c 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/trunk/ext/oci8/oci8.c 2011-11-07 20:10:41 UTC (rev 318888) @@ -2901,11 +2901,20 @@ PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIEnvNlsCreate, (&retenv, OCI_G(events) ? PHP_OCI_INIT_MODE | OCI_EVENTS : PHP_OCI_INIT_MODE, 0, NULL, NULL, NULL, 0, NULL, charsetid, charsetid)); if (OCI_G(errcode) != OCI_SUCCESS) { + sb4 ora_error_code = 0; + text ora_msg_buf[OCI_ERROR_MAXMSG_SIZE]; /* Use traditional smaller size: non-PL/SQL errors should fit and it keeps the stack smaller */ + #ifdef HAVE_OCI_INSTANT_CLIENT php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that " PHP_OCI8_LIB_PATH_MSG " includes the directory with Oracle Instant Client libraries"); #else php_error_docref(NULL TSRMLS_CC, E_WARNING, "OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and " PHP_OCI8_LIB_PATH_MSG " are set and point to the right directories"); #endif + if (retenv + && OCIErrorGet(retenv, (ub4)1, NULL, &ora_error_code, ora_msg_buf, (ub4)OCI_ERROR_MAXMSG_SIZE, (ub4)OCI_HTYPE_ENV) == OCI_SUCCESS + && *ora_msg_buf) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", ora_msg_buf); + } + return NULL; } return retenv; Modified: php/php-src/trunk/ext/oci8/package.xml =================================================================== --- php/php-src/trunk/ext/oci8/package.xml 2011-11-07 19:23:17 UTC (rev 318887) +++ php/php-src/trunk/ext/oci8/package.xml 2011-11-07 20:10:41 UTC (rev 318888) @@ -47,6 +47,7 @@ <license uri="http://www.php.net/license">PHP</license> <notes> Increased maximum possible Oracle DB error message length + Improve internal initalization failure error messages </notes> <contents> <dir name="/">
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php