Commit f89bb30d authored by Ondrej Sury's avatar Ondrej Sury

Imported Upstream version 5.4.0~rc8

parent 5292df24
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Feb 2012, PHP 5.4.0 RC 8
15 Feb 2012, PHP 5.4.0 RC 8
- Core:
. Added ability to reset user opcode handlers (Yoram).
. Improved max_input_vars directive to check nested variables (Dmitry).
. Made ZEND_SIGNALS configurable via --enable-zend-signals, off by
default (Stas).
. Fixed bug #60965 (Buffer overflow on htmlspecialchars/entities with
$double=false). (Gustavo)
- CGI/FastCGI SAPI
. Fixed reinitialization of SAPI callbacks after php_module_startup().
(Dmitry)
02 Feb 2012, PHP 5.4.0 RC 7
- Core:
. Fix bug #60895 (Possible invalid handler usage in windows random
. Fixed bug #60895 (Possible invalid handler usage in windows random
functions). (Pierre)
. Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry)
. Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods.
......
......@@ -104,7 +104,7 @@ Derick) run the following commands for you:
``sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address``
3. Update ``web/qa/trunk/include/release-qa.php`` with the appropriate information.
3. Update ``qa.git/include/release-qa.php`` with the appropriate information.
See the documentation within release-qa.php for more information, but all releases
and RCs are configured here. Only $QA_RELEASES needs to be edited.
......@@ -113,15 +113,15 @@ Derick) run the following commands for you:
Note: Remember to update the MD5 checksum information.
4. Update ``web/php/trunk/include/version.inc`` (x=major version number)
4. Update ``php.git/include/version.inc`` (x=major version number)
a. ``$PHP_x_RC`` = "5.4.0RC1"
b. ``$PHP_x_RC_DATE`` = "06 September 2007"
5. Commit those changes:
5. Commit and push those changes:
a. ``svn commit web/qa/trunk web/php-bugs/trunk web/php/trunk``
a. ``git commit -a && git push origin master``
6. For the first RC, write the doc team (phpdoc@lists.php.net) about updating the
INSTALL and win32/install.txt files which are generated from the PHP manual sources.
......
dnl
dnl $Id: Zend.m4 312377 2011-06-22 14:23:21Z iliaa $
dnl $Id: Zend.m4 323245 2012-02-16 01:51:45Z stas $
dnl
dnl This file contains Zend specific autoconf functions.
dnl
......@@ -393,14 +393,20 @@ int main()
AC_CHECK_FUNCS(mremap)
AC_ARG_ENABLE(zend-signals,
[ --enable-zend-signals Use zend signal handling],[
ZEND_SIGNALS=$enableval
],[
ZEND_SIGNALS=no
])
AC_CHECK_FUNC(sigaction, [
ZEND_SIGNALS=yes
AC_DEFINE(ZEND_SIGNALS, 1, [Use zend signal handling])
AC_DEFINE(HAVE_SIGACTION, 1, [Whether sigaction() is available])
], [
ZEND_SIGNALS=no
])
if test "$ZEND_SIGNALS" = "yes"; then
AC_DEFINE(ZEND_SIGNALS, 1, [Use zend signal handling])
CFLAGS="$CFLAGS -DZEND_SIGNALS"
fi
......
--TEST--
Bug #60139 (Anonymous functions create cycles not detected by the GC)
--INI--
zend.enable_gc=1
--FILE--
<?php
class Foo {
......
......@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
/* $Id: zend.h 321753 2012-01-04 08:25:06Z laruence $ */
/* $Id: zend.h 323245 2012-02-16 01:51:45Z stas $ */
#ifndef ZEND_H
#define ZEND_H
......@@ -531,10 +531,8 @@ typedef struct _zend_utility_functions {
int (*write_function)(const char *str, uint str_length);
FILE *(*fopen_function)(const char *filename, char **opened_path TSRMLS_DC);
void (*message_handler)(long message, const void *data TSRMLS_DC);
#ifndef ZEND_SIGNALS
void (*block_interruptions)(void);
void (*unblock_interruptions)(void);
#endif
int (*get_configuration_directive)(const char *name, uint name_length, zval *contents);
void (*ticks_function)(int ticks);
void (*on_timeout)(int seconds TSRMLS_DC);
......@@ -677,10 +675,8 @@ BEGIN_EXTERN_C()
extern ZEND_API int (*zend_printf)(const char *format, ...) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 1, 2);
extern ZEND_API zend_write_func_t zend_write;
extern ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path TSRMLS_DC);
#ifndef ZEND_SIGNALS
extern ZEND_API void (*zend_block_interruptions)(void);
extern ZEND_API void (*zend_unblock_interruptions)(void);
#endif
extern ZEND_API void (*zend_ticks_function)(int ticks);
extern ZEND_API void (*zend_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 4, 0);
extern ZEND_API void (*zend_on_timeout)(int seconds TSRMLS_DC);
......
......@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
/* $Id: zend_execute.c 321634 2012-01-01 13:15:04Z felipe $ */
/* $Id: zend_execute.c 323204 2012-02-14 09:27:08Z dmitry $ */
#define ZEND_INTENSIVE_DEBUGGING 0
......@@ -1512,7 +1512,12 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler_t handler)
{
if (opcode != ZEND_USER_OPCODE) {
if (handler == NULL) {
/* restore the original handler */
zend_user_opcodes[opcode] = opcode;
} else {
zend_user_opcodes[opcode] = ZEND_USER_OPCODE;
}
zend_user_opcode_handlers[opcode] = handler;
return SUCCESS;
}
......
......@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
/* $Id: zend_execute_API.c 322922 2012-01-29 15:25:40Z derick $ */
/* $Id: zend_execute_API.c 323120 2012-02-08 03:03:05Z laruence $ */
#include <stdio.h>
#include <signal.h>
......@@ -1195,12 +1195,7 @@ ZEND_API int zend_eval_stringl(char *str, int str_len, zval *retval_ptr, char *s
}
CG(interactive) = 0;
retval = SUCCESS;
zend_try {
zend_execute(new_op_array TSRMLS_CC);
} zend_catch {
retval = FAILURE;
} zend_end_try();
CG(interactive) = orig_interactive;
if (local_retval_ptr) {
......@@ -1221,6 +1216,7 @@ ZEND_API int zend_eval_stringl(char *str, int str_len, zval *retval_ptr, char *s
destroy_op_array(new_op_array TSRMLS_CC);
efree(new_op_array);
EG(return_value_ptr_ptr) = original_return_value_ptr_ptr;
retval = SUCCESS;
} else {
retval = FAILURE;
}
......
......@@ -1064,6 +1064,7 @@ with_pear
with_zend_vm
enable_maintainer_zts
enable_inline_optimization
enable_zend_signals
with_tsrm_pth
with_tsrm_st
with_tsrm_pthreads
......@@ -2006,6 +2007,7 @@ Zend:
--enable-maintainer-zts Enable thread safety - for code maintainers only!!
--disable-inline-optimization
If building zend_execute.lo fails, try this switch
--enable-zend-signals Use zend signal handling
TSRM:
......@@ -3635,7 +3637,7 @@ ac_config_headers="$ac_config_headers main/php_config.h"
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
PHP_RELEASE_VERSION=0
PHP_EXTRA_VERSION="RC7"
PHP_EXTRA_VERSION="RC8"
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
......@@ -103687,7 +103689,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 103690 "configure"
#line 103692 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
......@@ -104177,12 +104179,20 @@ done
ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
if test "x$ac_cv_func_sigaction" = x""yes; then :
# Check whether --enable-zend-signals was given.
if test "${enable_zend_signals+set}" = set; then :
enableval=$enable_zend_signals;
ZEND_SIGNALS=$enableval
ZEND_SIGNALS=yes
else
$as_echo "#define ZEND_SIGNALS 1" >>confdefs.h
ZEND_SIGNALS=no
fi
ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
if test "x$ac_cv_func_sigaction" = x""yes; then :
$as_echo "#define HAVE_SIGACTION 1" >>confdefs.h
......@@ -104195,6 +104205,9 @@ else
fi
if test "$ZEND_SIGNALS" = "yes"; then
$as_echo "#define ZEND_SIGNALS 1" >>confdefs.h
CFLAGS="$CFLAGS -DZEND_SIGNALS"
fi
......@@ -105588,7 +105601,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 105591 "configure"' > conftest.$ac_ext
echo '#line 105604 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
......@@ -106980,7 +106993,7 @@ else
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
cat > conftest.$ac_ext <<EOF
#line 106983 "configure"
#line 106996 "configure"
#include "confdefs.h"
int main() {
; return 0; }
......@@ -107138,11 +107151,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"configure:107141: $lt_compile\"" >&5)
(eval echo "\"configure:107154: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "configure:107145: \$? = $ac_status" >&5
echo "configure:107158: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
......@@ -107436,11 +107449,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"configure:107439: $lt_compile\"" >&5)
(eval echo "\"configure:107452: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "configure:107443: \$? = $ac_status" >&5
echo "configure:107456: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
......@@ -107540,11 +107553,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"configure:107543: $lt_compile\"" >&5)
(eval echo "\"configure:107556: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "configure:107547: \$? = $ac_status" >&5
echo "configure:107560: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
......@@ -108004,7 +108017,7 @@ _LT_EOF
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
#line 108007 "configure"
#line 108020 "configure"
#include "confdefs.h"
int main() {
; return 0; }
......@@ -108046,7 +108059,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
#line 108049 "configure"
#line 108062 "configure"
#include "confdefs.h"
int main() {
; return 0; }
......@@ -109571,7 +109584,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 109574 "configure"
#line 109587 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
......@@ -109671,7 +109684,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 109674 "configure"
#line 109687 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
......@@ -110736,7 +110749,7 @@ case $host_os in
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
#line 110739 "configure"
#line 110752 "configure"
#include "confdefs.h"
int main() {
; return 0; }
......@@ -110779,7 +110792,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
#line 110782 "configure"
#line 110795 "configure"
#include "confdefs.h"
int main() {
; return 0; }
......@@ -112031,11 +112044,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"configure:112034: $lt_compile\"" >&5)
(eval echo "\"configure:112047: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "configure:112038: \$? = $ac_status" >&5
echo "configure:112051: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
......@@ -112135,11 +112148,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"configure:112138: $lt_compile\"" >&5)
(eval echo "\"configure:112151: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "configure:112142: \$? = $ac_status" >&5
echo "configure:112155: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
## $Id: configure.in 323025 2012-02-02 17:28:03Z stas $ -*- autoconf -*-
## $Id: configure.in 323247 2012-02-16 07:45:08Z stas $ -*- autoconf -*-
dnl ## Process this file with autoconf to produce a configure script.
dnl include Zend specific macro definitions first
......@@ -120,7 +120,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
PHP_RELEASE_VERSION=0
PHP_EXTRA_VERSION="RC7"
PHP_EXTRA_VERSION="RC8"
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
......
......@@ -26,5 +26,5 @@ curl_close($ch);
?>
--EXPECTF--
%unicode|string%(%d) "%r(Couldn't resolve proxy|Could not resolve proxy:)%r %s"
%unicode|string%(%d) "%r(Couldn't resolve proxy|Could not resolve proxy:|Could not resolve host:)%r %s"
int(5)
......@@ -92,7 +92,7 @@ include_once( 'ut_common.inc' );
// Run the test
ut_run();
?>
--EXPECT--
--EXPECTF--
-------------------------------
Input text is : Thursday, December 18, 1969 8:49:59 AM PST
......@@ -110,7 +110,7 @@ Input text is : June 18, 1969 8:49:59 AM
IntlDateFormatter : DateType::LONG, TimeType::LONG
------------
IntlDateFormatter : DateType::MEDIUM, TimeType::MEDIUM
tm_sec : '59' , tm_min : '49' , tm_hour : '8' , tm_year : '69' , tm_mday : '18' , tm_wday : '3' , tm_yday : '169' , tm_mon : '5' , tm_isdst : '1' ,
tm_sec : '59' , tm_min : '49' , tm_hour : '8' , tm_year : '69' , tm_mday : '18' , tm_wday : '3' , tm_yday : '169' , tm_mon : '5' , tm_isdst : '%d' ,
------------
IntlDateFormatter : DateType::FULL, TimeType::FULL
-------------------------------
......
......@@ -78,7 +78,7 @@ include_once( 'ut_common.inc' );
// Run the test
ut_run();
?>
--EXPECT--
--EXPECTF--
-------------------------------
Input text is : Thursday, December 18, 1969 8:49:59 AM PST
......@@ -96,7 +96,7 @@ Input text is : June 18, 1969 8:49:59 AM
IntlDateFormatter : DateType::LONG, TimeType::LONG Error : 'Date parsing failed: U_PARSE_ERROR'
------------
IntlDateFormatter : DateType::MEDIUM, TimeType::MEDIUM
tm_sec : '59' , tm_min : '49' , tm_hour : '8' , tm_year : '69' , tm_mday : '18' , tm_wday : '3' , tm_yday : '169' , tm_mon : '5' , tm_isdst : '1' ,
tm_sec : '59' , tm_min : '49' , tm_hour : '8' , tm_year : '69' , tm_mday : '18' , tm_wday : '3' , tm_yday : '169' , tm_mon : '5' , tm_isdst : '%d' ,
------------
IntlDateFormatter : DateType::FULL, TimeType::FULL Error : 'Date parsing failed: U_PARSE_ERROR'
-------------------------------
......
......@@ -20,7 +20,9 @@ array(11) {
["nsCertType"]=>
string(30) "SSL Client, SSL Server, S/MIME"
["crlDistributionPoints"]=>
string(51) "URI:http://mobile.blue-software.ro:90/ca/crl.shtml
string(65) "
Full Name:
URI:http://mobile.blue-software.ro:90/ca/crl.shtml
"
["nsCaPolicyUrl"]=>
string(38) "http://mobile.blue-software.ro:90/pub/"
......
......@@ -35,6 +35,6 @@ $arr = openssl_x509_parse($cert);
var_dump($arr['hash']);
echo "Done";
?>
--EXPECT--
string(8) "9337ed77"
--EXPECTF--
string(8) "%s"
Done
--TEST--
openssl_x509_parse() basic test
--SKIPIF--
<?php if (!extension_loaded("openssl")) print "skip"; ?>
<?php if (!extension_loaded("openssl")) print "skip";
if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0");
?>
--FILE--
<?php
$cert = "file://" . dirname(__FILE__) . "/cert.crt";
......@@ -9,7 +11,7 @@ $cert = "file://" . dirname(__FILE__) . "/cert.crt";
var_dump(openssl_x509_parse($cert));
var_dump(openssl_x509_parse($cert, false));
?>
--EXPECT--
--EXPECTF--
array(12) {
["name"]=>
string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
......@@ -27,7 +29,7 @@ array(12) {
string(16) "hnangelo@php.net"
}
["hash"]=>
string(8) "088c65c2"
string(8) "%s"
["issuer"]=>
array(5) {
["C"]=>
......@@ -54,7 +56,7 @@ array(12) {
["validTo_time_t"]=>
int(1217413723)
["purposes"]=>
array(8) {
array(9) {
[1]=>
array(3) {
[0]=>
......@@ -127,6 +129,15 @@ array(12) {
[2]=>
string(10) "ocsphelper"
}
[9]=>
array(3) {
[0]=>
bool(false)
[1]=>
bool(true)
[2]=>
string(13) "timestampsign"
}
}
["extensions"]=>
array(3) {
......@@ -158,7 +169,7 @@ array(12) {
string(16) "hnangelo@php.net"
}
["hash"]=>
string(8) "088c65c2"
string(8) "%s"
["issuer"]=>
array(5) {
["countryName"]=>
......@@ -185,7 +196,7 @@ array(12) {
["validTo_time_t"]=>
int(1217413723)
["purposes"]=>
array(8) {
array(9) {
[1]=>
array(3) {
[0]=>
......@@ -258,6 +269,15 @@ array(12) {
[2]=>
string(11) "OCSP helper"
}
[9]=>
array(3) {
[0]=>
bool(false)
[1]=>
bool(true)
[2]=>
string(18) "Time Stamp signing"
}
}
["extensions"]=>
array(3) {
......
--TEST--
openssl_x509_parse() basic test for OpenSSL 0.9
--SKIPIF--
<?php if (!extension_loaded("openssl")) print "skip";
if (OPENSSL_VERSION_NUMBER > 0x10000000) die("skip Output requires OpenSSL 0.9");
?>
--FILE--
<?php
$cert = "file://" . dirname(__FILE__) . "/cert.crt";
var_dump(openssl_x509_parse($cert));
var_dump(openssl_x509_parse($cert, false));
?>
--EXPECTF--
array(12) {
["name"]=>
string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
["subject"]=>
array(5) {
["C"]=>
string(2) "BR"
["ST"]=>
string(17) "Rio Grande do Sul"
["L"]=>
string(12) "Porto Alegre"
["CN"]=>
string(21) "Henrique do N. Angelo"
["emailAddress"]=>
string(16) "hnangelo@php.net"
}
["hash"]=>
string(8) "%s"
["issuer"]=>
array(5) {
["C"]=>
string(2) "BR"
["ST"]=>
string(17) "Rio Grande do Sul"
["L"]=>
string(12) "Porto Alegre"
["CN"]=>
string(21) "Henrique do N. Angelo"
["emailAddress"]=>
string(16) "hnangelo@php.net"
}
["version"]=>
int(2)
["serialNumber"]=>
string(20) "12593567369101004962"
["validFrom"]=>
string(13) "080630102843Z"
["validTo"]=>
string(13) "080730102843Z"
["validFrom_time_t"]=>
int(1214821723)
["validTo_time_t"]=>
int(1217413723)
["purposes"]=>
array(8) {
[1]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(9) "sslclient"
}
[2]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(9) "sslserver"
}
[3]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(11) "nssslserver"
}
[4]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(9) "smimesign"
}
[5]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(12) "smimeencrypt"
}
[6]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(7) "crlsign"
}
[7]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(3) "any"
}
[8]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(10) "ocsphelper"
}
}
["extensions"]=>
array(3) {
["subjectKeyIdentifier"]=>
string(59) "DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D"
["authorityKeyIdentifier"]=>
string(202) "keyid:DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D
DirName:/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net
serial:AE:C5:56:CC:72:37:50:A2
"
["basicConstraints"]=>
string(7) "CA:TRUE"
}
}
array(12) {
["name"]=>
string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
["subject"]=>
array(5) {
["countryName"]=>
string(2) "BR"
["stateOrProvinceName"]=>
string(17) "Rio Grande do Sul"
["localityName"]=>
string(12) "Porto Alegre"
["commonName"]=>
string(21) "Henrique do N. Angelo"
["emailAddress"]=>
string(16) "hnangelo@php.net"
}
["hash"]=>
string(8) "%s"
["issuer"]=>
array(5) {
["countryName"]=>
string(2) "BR"
["stateOrProvinceName"]=>
string(17) "Rio Grande do Sul"
["localityName"]=>
string(12) "Porto Alegre"
["commonName"]=>
string(21) "Henrique do N. Angelo"
["emailAddress"]=>
string(16) "hnangelo@php.net"
}
["version"]=>
int(2)
["serialNumber"]=>
string(20) "12593567369101004962"
["validFrom"]=>
string(13) "080630102843Z"
["validTo"]=>
string(13) "080730102843Z"
["validFrom_time_t"]=>
int(1214821723)
["validTo_time_t"]=>
int(1217413723)
["purposes"]=>
array(8) {
[1]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(10) "SSL client"
}
[2]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(10) "SSL server"
}
[3]=>
array(3) {
[0]=>
bool(true)
[1]=>
bool(true)
[2]=>
string(19) "Netscape SSL server"