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

Reply via email to