Edit report at https://bugs.php.net/bug.php?id=60157&edit=1
ID: 60157 User updated by: zeusgerde at arcor dot de Reported by: zeusgerde at arcor dot de Summary: OPENSSL_CONF environment variable ignored -Status: Feedback +Status: Open Type: Bug Package: OpenSSL related Operating System: Windows XP and Windows 7 PHP Version: 5.3.8 Block user comment: N Private report: N New Comment: > Where do you set it? System wild? manually in your script? In httpd.conf in a global scope: | SetEnv OPENSSL_CONF D:\sandbox\openssl.cnf You can see that it is set in the actual result: | var_dump(getenv('OPENSSL_CONF')); | // string(42) "D:\sandbox\openssl.cnf" (hint: don't look at the string length, I scrambled the path in this bug report) > putenv("OPENSSL_CONF=whereyouwanit"); No change in the actual result. Even if I do this: | putenv("OPENSSL_CONF=", getenv('OPENSSL_CONF')); It only works if I use the $configargs parameter directly (see my first comment at 2011-10-28 11:48 UTC) Previous Comments: ------------------------------------------------------------------------ [2011-10-28 12:45:52] paj...@php.net Where do you set it? System wild? manually in your script? try: putenv("OPENSSL_CONF=whereyouwanit"); .. rest of your code.. Only to verify a possible cause. ------------------------------------------------------------------------ [2011-10-28 11:50:18] zeusgerde at arcor dot de BTW, this is the work-around var_dump(openssl_pkey_new(array( 'config' => getenv('OPENSSL_CONF'), ))); ------------------------------------------------------------------------ [2011-10-28 11:48:36] zeusgerde at arcor dot de Description: ------------ setting OPENSSL_CONF is ignored in openssl* functions despite the documentation lists it as the first location where the configuration file is searched http://de2.php.net/manual/en/openssl.installation.php Test script: --------------- <?php header('Content-Type: text/plain'); echo "Current PHP version: ", phpversion(), "\n"; echo "*** OPENSSL_CONF\n"; var_dump(getenv('OPENSSL_CONF')); echo "\n*** Errors before calling openssl_pkey_new\n"; while (($e = openssl_error_string()) !== false) { var_dump($e); } echo "\n*** Calling openssl_pkey_new\n"; var_dump(openssl_pkey_new()); echo "\n*** Errors after calling openssl_pkey_new\n"; while (($e = openssl_error_string()) !== false) { var_dump($e); } Expected result: ---------------- Current PHP version: 5.3.8 *** OPENSSL_CONF string(42) "D:\sandbox\openssl.cnf" *** Errors before calling openssl_pkey_new *** Calling openssl_pkey_new resource(2) of type (OpenSSL key) *** Errors after calling openssl_pkey_new Actual result: -------------- Current PHP version: 5.3.8 *** OPENSSL_CONF string(42) "D:\sandbox\openssl.cnf" *** Errors before calling openssl_pkey_new *** Calling openssl_pkey_new bool(false) *** Errors after calling openssl_pkey_new string(51) "error:02001003:system library:fopen:No such process" string(53) "error:2006D080:BIO routines:BIO_new_file:no such file" string(63) "error:0E064002:configuration file routines:CONF_load:system lib" string(51) "error:02001003:system library:fopen:No such process" string(53) "error:2006D080:BIO routines:BIO_new_file:no such file" string(63) "error:0E064002:configuration file routines:CONF_load:system lib" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60157&edit=1