[PHP-DEV] CVS Account Request: flex
Helping (active development) with ext/xslt extension (sablot backend). -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-DEV] [PATCH] xslt sablot backend
Hello, Two problems with sablot support in PHP 4.1.2 (and propably later releases). 1) This patch makes xslt/sablot to work with libsablot = 0.90 and also makes it incompatible with earlier sablotron releases. This fix might be in HEAD already (at least it seems so), but please include this with next minor release since anything 0.90 is too damn old if we are talking about sablotron. 2) Added a lot of if(retval) checks to avoid segfaults when user specified callback doesn't exist. Right now after module issues warning it segfaults when trying to zval_ptr_dtor(retval) because that retval isn't actually allocated when specified function doesn't exist. This patch is against 4.1.2 source. Thanks, Lenar --- sablot.c.old Sat May 11 12:10:49 2002 +++ sablot.c Sat May 11 12:58:18 2002 -52,15 +52,15 static int scheme_close(void *, SablotHandle, int); /* Sax handler functions */ -static SAX_RETURN sax_startdoc(void *); -static SAX_RETURN sax_startelement(void *, const char *, const char **); -static SAX_RETURN sax_endelement(void *, const char *); -static SAX_RETURN sax_startnamespace(void *, const char *, const char *); -static SAX_RETURN sax_endnamespace(void *, const char *); -static SAX_RETURN sax_comment(void *, const char *); -static SAX_RETURN sax_pi(void *, const char *, const char *); -static SAX_RETURN sax_characters(void *, const char *, int); -static SAX_RETURN sax_enddoc(void *); +static SAX_RETURN sax_startdoc(void *, SablotHandle); +static SAX_RETURN sax_startelement(void *, SablotHandle, const char *, const char **); +static SAX_RETURN sax_endelement(void *, SablotHandle, const char *); +static SAX_RETURN sax_startnamespace(void *, SablotHandle, const char *, const char *); +static SAX_RETURN sax_endnamespace(void *, SablotHandle, const char *); +static SAX_RETURN sax_comment(void *, SablotHandle, const char *); +static SAX_RETURN sax_pi(void *, SablotHandle, const char *, const char *); +static SAX_RETURN sax_characters(void *, SablotHandle, const char *, int); +static SAX_RETURN sax_enddoc(void *, SablotHandle); /* Error handlers */ static MH_ERROR error_makecode(void *, SablotHandle, int, unsigned short, unsigned short); -723,12 +723,14 xslt_call_function(scheme get all, XSLT_SCHEME(handle).get_all, 3, argv, retval); - /* Save the return value in the buffer (copying it) */ - *buffer = estrndup(Z_STRVAL_P(retval), Z_STRLEN_P(retval)); - *byte_count = Z_STRLEN_P(retval); + if(retval) { + /* Save the return value in the buffer (copying it) */ + *buffer = estrndup(Z_STRVAL_P(retval), Z_STRLEN_P(retval)); + *byte_count = Z_STRLEN_P(retval); - /* Free return value */ - zval_ptr_dtor(retval); + /* Free return value */ + zval_ptr_dtor(retval); + } return 0; } -801,11 +803,13 xslt_call_function(scheme open, XSLT_SCHEME(handle).open, 3, argv, retval); - /* Return value is a resource pointer to an open file */ - *fd = Z_LVAL_P(retval); + if(retval) { + /* Return value is a resource pointer to an open file */ + *fd = Z_LVAL_P(retval); - /* Free it all up */ - zval_ptr_dtor(retval); + /* Free it all up */ + zval_ptr_dtor(retval); + } /* return success */ return 0; -845,11 +849,13 xslt_call_function(scheme get, XSLT_SCHEME(handle).get, 3, argv, retval); - /* Returns the number of bytes read */ - *byte_count = Z_LVAL_P(retval); + if(retval) { + /* Returns the number of bytes read */ + *byte_count = Z_LVAL_P(retval); - /* Free things up */ - zval_ptr_dtor(retval); + /* Free things up */ + zval_ptr_dtor(retval); + } /* return success */ return 0; -889,11 +895,13 xslt_call_function(scheme put, XSLT_SCHEME(handle).put, 3, argv, retval); - /* The return value is the number of bytes written */ - *byte_count = Z_LVAL_P(retval); + if(retval) { + /* The return value is the number of bytes written */ + *byte_count = Z_LVAL_P(retval); - /* Free everything up */ - zval_ptr_dtor(retval); + /* Free everything up */ + zval_ptr_dtor(retval); + } /* Return success */ return 0; -931,7 +939,8 2, argv, retval); /* Free everything up */ - zval_ptr_dtor(retval); + if(retval) + zval_ptr_dtor(retval); /* Return success */ return 0; -940,7 +949,7 /* {{{ sax_startdoc() Called when the document starts to be processed */ -static SAX_RETURN sax_startdoc(void *ctx) +static SAX_RETURN sax_startdoc(void *ctx, SablotHandle proc) { zval *argv[1];/* Arguments to the sax start doc function */ zval *retval; /* Return value from sax start doc function */ -964,13 +973,15 1, argv, retval); /* Cleanup */ - zval_ptr_dtor(retval); + if(retval) + zval_ptr_dtor(retval); } /* }}} */ /* {{{ sax_startelement() Called when an element is begun to be processed */ static SAX_RETURN sax_startelement(void *ctx
Re: [PHP-DEV] Re: PHP 5
Joe Webster wrote: Example: We have 200+ radio station websites in a network. The way we store data in the database is by call letters (since some websites have more than one domain). So call letters (whor-fm :) ) are the key to just about everything we do. So, in the vhost file for apache we want to set the station call letters so that the letters are available to the code. Maybe you should use SetEnv? Lenar -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Bug #14658 Updated: The strtok() changes destroyed 4 years old applications!
[EMAIL PROTECTED] wrote: ID: 14658 Updated by: derick Reported By: [EMAIL PROTECTED] Old Status: Open Status: Bogus Bug Type: Feature/Change Request Operating System: Linux, Solaris, Windows PHP Version: 4.1.0 New Comment: We are aware of this situation, and after some discussion on the mailinglist, we will not change it back. However, to read CSV files, there is function fgetcvs (http://www.php.net/manual/en/function.fgetcsv.php) which should do exactly what you want. Derick Previous Comments: [2001-12-22 05:46:46] [EMAIL PROTECTED] The change made in 4.1.0 to strtok() destroyed my applications from the past 4 years! Thats because I used strtok() to read data from CSV (comma separated values) files - for which it works perfektly! For CSV (not only separated with commans - also with | and other symbols) it is required that EMPTY fields will be reported as empty field!!! So the change you made brokes my existing applications. Or one can use split() Lenar For parsing tokens as explained I understand the change - because there you wont need empty tokens! But for real parsing strtok is useless(!) because you always have more than one separator - for human language parsing you need space, return/line feed, full stop as well as comma, questionmark etc. as separators! strtok() fails here as it seems to me!!! So my suggestion ist - to restore the old behaviour for CSV parsing and adding a new command like strparse() that will work with a list of separators!!! Greetings Dipl.-Inform. Kai Hofmann Edit this bug report at http://bugs.php.net/?id=14658edit=1 -- Lenar Lõhmus Vision Group -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Bug #14442 Updated: Segmentation fault when using xslt_process()
postitatud ja meilitud Does Apache configure say: 'Using system expat'? If not, then install libexpat and reconfigure/compile apache. ext/xslt will not work correctly (segfaults) when Apache is compiled with its bundled expat-lite. Lenar [EMAIL PROTECTED] wrote: ID: 14442 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: XSLT related Operating System: Linux (RH 7.0) PHP Version: 4.1.0 New Comment: libc version glibc-2.2-12 RPM libc-2.2.so libc.so.6 Previous Comments: [2001-12-12 13:38:03] [EMAIL PROTECTED] Just tried compiling 4.0.6 with the same options, same crash, but different debug output Program received signal SIGSEGV, Segmentation fault. 0x8132250 in xslt_call_function (name=0x82b1fb5 scheme get all, fptr=0x48544150, argc=3, argv=0xbfffdf60, retval=0xbfffdf5c) at xslt.c:218 218 error = call_user_function(EG(function_table), (gdb) bt #0 0x8132250 in xslt_call_function (name=0x82b1fb5 scheme get all, #fptr=0x48544150, argc=3, argv=0xbfffdf60, retval=0xbfffdf5c) at xslt.c:218 #1 0x81031de in scheme_getall (user_data=0x849718c, proc=0x8498b80, scheme=0x84958f8 ?xml version=\1.0\ encoding=\utf-8\?xsl, rest=0x849bfc8 /stylesheet version=\1.0\ xmlns:xsl=\http://www.w3.org/1999/XSL/Transform\; xsl:output\tme thod=\html\\tindent=\yes\\tencoding=\utf-8\/\nxsl:template match=\/backslash\ \n html \n head \n..., buffer=0x8495a48, byte_count=0xbfffe03c) at sablot.c:674 #2 0x400b1094 in DataLine::open (this=0x8495a30, S=@0x84956c8, _uri=0x849c980 ?xml version=\1.0\ encoding=\utf-8\?xsl:/stylesheet version=\1.0\ xmlns:xsl=\http://w ww.w3.org/1999/XSL/Transform\ xsl:output\tmethod=\html\\tindent=\yes\\tencoding=\utf-8\/\nxsl:template m atch=\/b..., _mode=DLMODE_READ, argList_=0x8498bc0) at uri.cpp:466 #3 0x400a1f7d in Processor::addLineParse (this=0x8498b80, S=@0x84956c8, #newTree=@0x8498b84, absolute=@0xbfffe150, isXSL=1) at guard.h:156 #4 0x400a26e6 in Processor::readTreeFromURI (this=0x8498b80, #S=@0x84956c8, newTree=@0x8498b84, location=@0xbfffe220, base=@0xbfffe200, isXSL=1) at proc.cpp:602 #5 0x400a0445 in Processor::open (this=0x8498b80, S=@0x84956c8, sheetURI=0x849ac64 ?xml version=\1.0\ encoding=\utf-8\?xsl:stylesheet version=\1.0\ xmlns:xsl=\http: //www.w3.org/1999/XSL/Transform\ xsl:output\tmethod=\html\\tindent=\yes\\tencoding=\utf-8\/\nxsl:templat e match=\/ba..., inputURI=0x8495f8c ?xml version=\1.0\?\r\nbackslash xmlns:backslash=\http://slashdot.org/backslash.dtd\; \r\n story\r\n titleFree Stripped-Down 3D Studio Max/title\r\n urlhttp://slashdot.org/arti cle.pl...) at proc.cpp:276 #6 0x400a5c2b in SablotRunProcessor (processor_=0x8498b80, sheetURI=0x849ac64 ?xml version=\1.0\ encoding=\utf-8\?xsl:stylesheet version=\1.0\ xmlns:xsl=\http: //www.w3.org/1999/XSL/Transform\ xsl:output\tmethod=\html\\tindent=\yes\\tencoding=\utf-8\/\nxsl:templat e match=\/ba..., inputURI=0x8495f8c ?xml version=\1.0\?\r\nbackslash xmlns:backslash=\http://slashdot.org/backslash.dtd\; \r\n story\r\n titleFree Stripped-Down 3D Studio Max/title\r\n urlhttp://slashdot.org/arti cle.pl..., resultURI=0x82b1f51 arg:/_result, params=0x0, arguments=0x0) at sablot.cpp:407 #7 0x8102c5e in php_if_xslt_process (ht=3, return_value=0x8495a7c, #this_ptr=0x0, return_value_used=0) at sablot.c:471 #8 0x813867d in execute (op_array=0x8494e7c) at ./zend_execute.c:1504 #9 0x8111c1e in zend_execute_scripts (type=8, file_count=3) at zend.c:752 #10 0x8091167 in php_execute_script (primary_file=0xb840) at #main.c:1206 11 0x811d5e6 in apache_php_module_main (r=0x83ee79c, #display_source_mode=0) at sapi_apache.c:89 12 0x808eb88 in send_php () #13 0x808ebbd in send_parsed_php () #14 0x817cfb3 in ap_invoke_handler () #15 0x8191197 in process_request_internal () #16 0x81911f8 in ap_process_request () #17 0x818865d in child_main () #18 0x8188808 in make_child () #19 0x818897c in startup_children () #20 0x8188ff4 in standalone_main () #21 0x8189847 in main () #22 0x40327f31 in __libc_start_main (main=0x81894b0 main, argc=2, #ubp_av=0xbb14, init=0x808bfc8 _init, fini=0x829cff0 _fini, rtld_fini=0x4000e274 _dl_fini, stack_end=0xbb0c) at ../sysdeps/generic/libc-start.c:129 [2001-12-11 20:57:00] [EMAIL PROTECTED] I am trying to run the XSLT example at phpbuilder using these 2 files as input. http://www.phpbuilder.com/columns/justin20001025.php3?page=2 http://www.phpbuilder.com/columns/justin20001025.php3?page=3 I have written my own script to process this: -- ?php $pr = xslt_create(); $xsl = fopen(test.xsl, r); $xml = fopen(test.xml, r); $xslc = fread
[PHP-DEV] Re: Bug #13896 Updated: Segmentation fault with xslt extention
Apache is compiled with expat-lite? Apache must be compiled against system libexpat. This kind of random segfaults with xslt indicate that apache is not compiled against system libexpat. Lenar [EMAIL PROTECTED] wrote: ID: 13896 Updated by: mfischer Reported By: [EMAIL PROTECTED] Status: Open Bug Type: XSLT related Operating System: Linux RH 7.2 PHP Version: 4.1.0RC1 New Comment: s/now known/not known/ Previous Comments: [2001-12-02 19:28:54] [EMAIL PROTECTED] s/now known/not known/ [2001-12-02 19:28:27] [EMAIL PROTECTED] The following somehow works for me: ?php $xp = xslt_create(); $content = xslt_process($xp, 'arg:/xmldata', '13896.xsl', NULL, array('xmldata' = join('', file('13896.xml'))), $HTTP_GET_VARS); xslt_free($xp); ? except that it bails out that the encoding is now known and the xml not valid. However, no crash. [2001-11-01 07:45:39] [EMAIL PROTECTED] and yet anoter bt: Starting program: /usr/sbin/httpd -X [New Thread 1024 (LWP 26820)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1024 (LWP 26820)] 0x401bef29 in chunk_free (ar_ptr=0x40272a00, p=0x8104608) at malloc.c:3242 3242malloc.c: No such file or directory. in malloc.c (gdb) bt #0 0x401bef29 in chunk_free (ar_ptr=0x40272a00, p=0x8104608) at #malloc.c:3242 #1 0x401becd4 in __libc_free (mem=0x8104610) at malloc.c:3154 #2 0x4057f1f6 in __builtin_delete (ptr=0x8104610) from #/usr//lib/libstdc++-libc6.2-2.so.3 #3 0x405fe5c7 in Expression::~Expression () from /usr//lib/libsablot.so.0 #4 0x4063f8ee in PListExpression *::freeall () from #/usr//lib/libsablot.so.0 #5 0x405fe601 in Expression::clearContent () from #/usr//lib/libsablot.so.0 #6 0x405fe5a0 in Expression::~Expression () from /usr//lib/libsablot.so.0 #7 0x406330c5 in Attribute::~Attribute () from /usr//lib/libsablot.so.0 #8 0x40630b30 in VertexList::destructMembers () from #/usr//lib/libsablot.so.0 #9 0x406319a9 in Element::~Element () from /usr//lib/libsablot.so.0 #10 0x40648846 in XSLElement::~XSLElement () from /usr//lib/libsablot.so.0 #11 0x40630b30 in VertexList::destructMembers () from #/usr//lib/libsablot.so.0 12 0x40631379 in Daddy::~Daddy () from #/usr//lib/libsablot.so.0 13 0x406319e4 in Element::~Element () from #/usr//lib/libsablot.so.0 14 0x40648846 in XSLElement::~XSLElement () from #/usr//lib/libsablot.so.0 15 0x40630b30 in VertexList::destructMembers () #from /usr//lib/libsablot.so.0 16 0x40631379 in Daddy::~Daddy () from #/usr//lib/libsablot.so.0 17 0x406319e4 in Element::~Element () from #/usr//lib/libsablot.so.0 18 0x406315b6 in RootNode::~RootNode () from #/usr//lib/libsablot.so.0 19 0x40627e5c in Tree::~Tree () from #/usr//lib/libsablot.so.0 20 0x4061b389 in DataLineItem::~DataLineItem () #from /usr//lib/libsablot.so.0 21 0x4064463b in PListDataLineItem #*::freerm () from /usr//lib/libsablot.so.0 22 0x4061b920 in #Processor::freeNonArgDatalines () from /usr//lib/libsablot.so.0 23 #0x4061ba98 in Processor::cleanupAfterRun () from /usr//lib/libsablot.so.0 #24 0x40621cbd in SablotRunProcessor () from /usr//lib/libsablot.so.0 25 #0x4050c946 in zif_xslt_process (ht=6, return_value=0x8111a3c, #this_ptr=0x0, return_value_used=1) at sablot.c:512 #26 0x4042fc81 in execute (op_array=0x80fe88c) at ./zend_execute.c:1590 #27 0x40431e8e in execute (op_array=0x8120f6c) at ./zend_execute.c:2133 #28 0x4044057c in zend_execute_scripts (type=8, retval=0x0, file_count=3) #at zend.c:814 ---Type return to continue, or q return to quit--- #29 0x40452712 in php_execute_script (primary_file=0xbfffef90) at #main.c:1310 30 0x4044d4e6 in apache_php_module_main (r=0x80f6560, #display_source_mode=0) at sapi_apache.c:90 31 0x4044e354 in send_php #(r=0x80f6560, display_source_mode=0, filename=0x80f81b8 /home/transalp.php/travel/long/index.php) at mod_php4.c:575 #32 0x4044e3ce in send_parsed_php (r=0x80f6560) at mod_php4.c:590 #33 0x080551bd in ap_invoke_handler () at eval.c:41 #34 0x0806735c in ap_some_auth_required () at eval.c:41 #35 0x080673d3 in ap_process_request () at eval.c:41 #36 0x0805fa37 in ap_child_terminate () at eval.c:41 #37 0x0805fbda in ap_child_terminate () at eval.c:41 #38 0x0805fd1d in ap_child_terminate () at eval.c:41 #39 0x0806033e in ap_child_terminate () at eval.c:41 #40 0x08060c03 in main () at eval.c:41 #41 0x4015a627 in __libc_start_main (main=0x8060780 main, argc=2, #ubp_av=0xb414, init=0x804fb20 _init, fini=0x8089450 _fini, rtld_fini=0x4000dcd4 _dl_fini, stack_end=0xb40c) at ../sysdeps/generic/libc-start.c:129 [2001-11-01 07:44:42] [EMAIL
[PHP-DEV] Bug #14266: serialize() doesn't work correcty
From: [EMAIL PROTECTED] Operating system: Debian Linux PHP version: 4.1.0 PHP Bug Type: Scripting Engine problem Bug description: serialize() doesn't work correcty Consider following simple script. It's pretty obvious that serialize() does not work correctly (at least not as expected). ?php $x = new stdClass(); $x-x = $x; $s = serialize($x) . \n; echo test on original: ; // OK $x-a = str; echo $x-x-a . \n; $o = unserialize($s); echo test on unserialized object: ; // not OK $o-a = str; echo $o-x-a . \n; ? -- Edit bug report at: http://bugs.php.net/?id=14266edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14266 Updated: serialize() doesn't work correcty
ID: 14266 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Old Status: Bogus Status: Open Bug Type: Scripting Engine problem Operating System: Debian Linux Old PHP Version: 4.1.0 PHP Version: 4.2.0-dev New Comment: Tested this with current cvs too. No better luck. Original and unserialized objects have different representation in memory. Previous Comments: [2001-11-28 08:38:01] [EMAIL PROTECTED] Circualar reference here: $x-x = $x; These dont work as expected at all. Bogus bug report as the lang isnt designed to support this. - James [2001-11-28 08:32:48] [EMAIL PROTECTED] Consider following simple script. It's pretty obvious that serialize() does not work correctly (at least not as expected). ?php $x = new stdClass(); $x-x = $x; $s = serialize($x) . \n; echo test on original: ; // OK $x-a = str; echo $x-x-a . \n; $o = unserialize($s); echo test on unserialized object: ; // not OK $o-a = str; echo $o-x-a . \n; ? Edit this bug report at http://bugs.php.net/?id=14266edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14266 Updated: serialize() doesn't work correcty
ID: 14266 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Old Status: Bogus Status: Open Bug Type: Scripting Engine problem Operating System: Debian Linux PHP Version: 4.2.0-dev New Comment: I dont' agree. Circular refferences can happen with objects (using refferences). Sometimes they are intentional. And serialize() doesn't completely ignore this. Because it spits out: O:8:stdClass:1:{s:1:x;O:8:stdClass:1:{s:1:x;R:2;}} so it knows about circular refferences. Now is there any reason why it doesn't generate instead something like this: O:8:stdClass:1:{s:1:x;R:1;} I would understand if it completely ignores circular references, but it doesn't. It just misbehaves. Previous Comments: [2001-11-28 08:41:04] [EMAIL PROTECTED] Your creating a reference to itself this is not allowed. Therefore the bug is bogus, the behaviour is undefined. - James [2001-11-28 08:38:38] [EMAIL PROTECTED] Tested this with current cvs too. No better luck. Original and unserialized objects have different representation in memory. [2001-11-28 08:38:01] [EMAIL PROTECTED] Circualar reference here: $x-x = $x; These dont work as expected at all. Bogus bug report as the lang isnt designed to support this. - James [2001-11-28 08:32:48] [EMAIL PROTECTED] Consider following simple script. It's pretty obvious that serialize() does not work correctly (at least not as expected). ?php $x = new stdClass(); $x-x = $x; $s = serialize($x) . \n; echo test on original: ; // OK $x-a = str; echo $x-x-a . \n; $o = unserialize($s); echo test on unserialized object: ; // not OK $o-a = str; echo $o-x-a . \n; ? Edit this bug report at http://bugs.php.net/?id=14266edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14266 Updated: serialize() doesn't work correcty
ID: 14266 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Bogus Bug Type: Scripting Engine problem Operating System: Debian Linux PHP Version: 4.2.0-dev New Comment: Ok, I tested a little bit more and found that when calling serialize() like serialize($x) it works. I know about leaks, but those leaks don't kill me (yet). And btw. Circular references work as expected. There is nothing so undefined about them in php. They work quite logically. Previous Comments: [2001-11-28 09:01:05] [EMAIL PROTECTED] sorry, i wanted to write: you realy should *NOT*... [2001-11-28 08:59:04] [EMAIL PROTECTED] Behaviour of Circular / Selfreferencing objects is not defined. you could try to do a workarround by using defining __sleep() and __wakeup() in your class, which are called when the object is serialized / unserialized, and could unset those self-references. but you realy should do those.. if you dont destroy all of those references, you will get memory leaks! regards, Peter Petermann [2001-11-28 08:43:47] [EMAIL PROTECTED] I dont' agree. Circular refferences can happen with objects (using refferences). Sometimes they are intentional. And serialize() doesn't completely ignore this. Because it spits out: O:8:stdClass:1:{s:1:x;O:8:stdClass:1:{s:1:x;R:2;}} so it knows about circular refferences. Now is there any reason why it doesn't generate instead something like this: O:8:stdClass:1:{s:1:x;R:1;} I would understand if it completely ignores circular references, but it doesn't. It just misbehaves. [2001-11-28 08:41:04] [EMAIL PROTECTED] Your creating a reference to itself this is not allowed. Therefore the bug is bogus, the behaviour is undefined. - James [2001-11-28 08:38:38] [EMAIL PROTECTED] Tested this with current cvs too. No better luck. Original and unserialized objects have different representation in memory. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/?id=14266 Edit this bug report at http://bugs.php.net/?id=14266edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Re: [PATCH] optional parameter to mysql_connect() to create truly new link
Hi, I think no magic needed, optional parameter is good enough solution and gives the control to the hands of programmer. Just - there should be this flag for both: mysql_connect() and mysql_pconnect(). And I agree different usernames is not the right thing to suggest. Lenar Markus Fischer wrote: On Wed, Nov 21, 2001 at 12:16:51PM +0200, Lenar Lõhmus wrote : Markus Fischer wrote: Hi, The attached patch against current CVS adds an optional parameter to mysql_connect() to specify if a truly new link to the database should be established. The patch changes the prototype to: resource mysql_connect ([string hostname [, string username [, string password [, bool new_link ); There is no BC issue. The optional parameter is ignored when using mysql_pconnect(). I think it's not right to ignore this with mysql_pconnect(). In this case the meaning of this flag should be: 'return existing mysql resource (or create new) not yet returned by similar call during this request' Sure. It's just a matter of altering the logic (just a oneliner). The problem, with the current implementation you _can't_ work this around from PHP side. Only with different database users which is, IMHO, not the right solution. PHP traps traps you into this and its not hard to fix and has no BC issues at all. I already received mail that its stupid to add a new param to the Function. and that its better that PHP detects this problem self. I don't see such a problem with an optional parameter. And, I don't think its possible for PHP to do magic and detect itself what to do. I wonder what others think? - Markus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] php module calling php code
Colin McDonald wrote: you where close: call_user_method() Zak was right. call_user_method() is deprecated. At least it sais so when NOTICEs are enabled. colin Zak Greant wrote: IIAGR, you should be able to find an example in call_user_func() -- Lenar Lõhmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14136: Segfaults when forget xslt_free()
From: [EMAIL PROTECTED] Operating system: Debian/Linux PHP version: 4.0CVS-2001-11-20 PHP Bug Type: XSLT related Bug description: Segfaults when forget xslt_free() Tested this with php compiled as cgi. Everything works ok when after doing transformation you use xslt_free() in your script. When you forget to do so php may segfault. This happens when there were a scheme/sax handler defined with object reference: xslt_set_sax_handlers($xslt, array(characters = array($this, func))); Now when php shuts down it calls free_processor() which after some recursive *_ptr_dtor() and alike calls reaches again free_processor() with same zval handle. Since sablotron processor is already destroyed it eventually comes to segfault. This doesn't happen when ordinary function is used as callback handler. Backtrace: #0 0x in ?? () #1 0x400d8432 in Situation::generateMessage (this=0x81c4bb8, type=MT_WARN, code=W1_HLR_NOT_REGISTERED, arg1=@0xbfffee08, arg2=@0xbfffedfc, theMessage=@0xbfffed70) at situa.cpp:267 #2 0x400d8ae2 in Situation::message (this=0x81c4bb8, type=MT_WARN, code=W1_HLR_NOT_REGISTERED, arg1=@0xbfffee08, arg2=@0xbfffedfc) at situa.cpp:348 #3 0x400cfb63 in Processor::report (this=0x81c4c58, S=@0x81c4bb8, type=MT_WARN, code=W1_HLR_NOT_REGISTERED, arg1=@0xbfffee08, arg2=@0xbfffedfc) at proc.cpp:991 #4 0x400ce583 in Processor::setHandler (this=0x81c4c58, S=@0x81c4bb8, type=HLR_MESSAGE, handler=0x0, userData=0x0) at proc.cpp:741 #5 0x400d1a8c in SablotUnregHandler (processor_=0x81c4c58, type=HLR_MESSAGE, handler=0x0, userData=0x0) at sablot.cpp:728 #6 0x0811adc1 in free_processor (rsrc=0x81c0a8c) at sablot.c:613 #7 0x080c3a2a in list_entry_destructor (ptr=0x81c0a8c) at zend_list.c:177 #8 0x080c128e in zend_hash_del_key_or_index (ht=0x818dc44, arKey=0x0, nKeyLength=0, h=1, flag=1) at zend_hash.c:512 #9 0x080c378b in _zend_list_delete (id=1) at zend_list.c:56 #10 0x080d9581 in _zval_dtor (zvalue=0x81c4574, __zend_filename=0x813d01c zend_execute_API.c, __zend_lineno=274) at zend_variables.c:64 #11 0x080c66ab in _zval_ptr_dtor (zval_ptr=0x81c0ad8, __zend_filename=0x8149313 zend_variables.c, __zend_lineno=189) at zend_execute_API.c:274 #12 0x080d98b4 in _zval_ptr_dtor_wrapper (zval_ptr=0x81c0ad8) at zend_variables.c:189 #13 0x080c13ba in zend_hash_destroy (ht=0x81c101c) at zend_hash.c:541 #14 0x080d9551 in _zval_dtor (zvalue=0x81c4a34, __zend_filename=0x813d01c zend_execute_API.c, __zend_lineno=274) at zend_variables.c:57 #15 0x080c66ab in _zval_ptr_dtor (zval_ptr=0x81c0b90, __zend_filename=0x8149313 zend_variables.c, __zend_lineno=189) at zend_execute_API.c:274 #16 0x080d98b4 in _zval_ptr_dtor_wrapper (zval_ptr=0x81c0b90) at zend_variables.c:189 #17 0x080c13ba in zend_hash_destroy (ht=0x81c0b24) at zend_hash.c:541 #18 0x080d9521 in _zval_dtor (zvalue=0x81c0c5c, __zend_filename=0x813d01c zend_execute_API.c, __zend_lineno=274) at zend_variables.c:51 #19 0x080c66ab in _zval_ptr_dtor (zval_ptr=0x81c4b9c, __zend_filename=0x81672fb sablot.c, __zend_lineno=633) at zend_execute_API.c:274 #20 0x0811b00e in free_processor (rsrc=0x81c0a8c) at sablot.c:633 #21 0x080c3a2a in list_entry_destructor (ptr=0x81c0a8c) at zend_list.c:177 #22 0x080c3c15 in zend_destroy_rsrc_list (ht=0x818dc44) at zend_list.c:248 #23 0x080c64a7 in shutdown_executor () at zend_execute_API.c:196 #24 0x080c8e36 in zend_deactivate () at zend.c:600 #25 0x080637cf in php_request_shutdown (dummy=0x0) at main.c:736 #26 0x0805f023 in main (argc=2, argv=0xbb34) at cgi_main.c:785 #27 0x401e965f in __libc_start_main () from /lib/libc.so.6 -- Edit bug report at: http://bugs.php.net/?id=14136edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14137 Updated: Request additional flag for mysql_connect
ID: 14137 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Feature/Change Request Operating System: Debian/Linux PHP Version: 4.0CVS-2001-11-20 New Comment: I just want to add that creating another mysql account is not an valid option sometimes (with hosting companies for example). Although yes, this will solve the problem. Previous Comments: [2001-11-20 13:00:02] [EMAIL PROTECTED] Marko, will you please read the bugreport with more care the next time? THis is a valid report, but moving it to a feature request. Derick [2001-11-20 12:57:59] [EMAIL PROTECTED] Mistake, should read ...you get the old link back... [2001-11-20 12:57:16] [EMAIL PROTECTED] Not so fast .. This is definitely a problem when you try to connect to MySQL twice with the same incredentials (host,user,pass) you don't get the old link back and thus changing the database on one link obviously changes it on the other too ... Should be a Feature Request, note sure. A workaround is to create another user. Reopened. [2001-11-20 12:48:50] [EMAIL PROTECTED] Ups sorry wrong links. :) http://www.php.net/manual/en/ref.mysql.php http://www.php.net/manual/en/function.mysql-db-query.php --Marco Note: This function has been deprecated since PHP 4.0.6. Do not use this function. Use mysql_select_db() and mysql_query() instead. read the User comment's [2001-11-20 12:34:58] [EMAIL PROTECTED] bool mysql_select_db (string database_name, resource [link_identifier]) http://www.php.net/manual/en/function.mysql-select-db.php --Marco P.S. Maybe you upgrade your system or you learn to read the manual pages. The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/?id=14137 Edit this bug report at http://bugs.php.net/?id=14137edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14112 Updated: sprintf_array()
ID: 14112 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Feature/Change Request Operating System: Linux PHP Version: 4.1.0RC1 New Comment: Yes something like this should work. But it's not as fast as it could be. And I personally like when thins are as fast as possible. Previous Comments: [2001-11-19 05:53:41] [EMAIL PROTECTED] Why not just build your own function? function sprintf_array ($format) { if (1 == func_get_args () ) { return sprintf ($format); } $argv = func_get_args (); return call_user_func_array ('sprintf', $argv); } (Not tested, but something like this should work. :) [2001-11-19 05:46:48] [EMAIL PROTECTED] Hi, During development i felt great need for function that could be named sprintf_array() That is ordinary sprintf() which would be able to take arguments from array: string sprintf_array(string format, array args) What do you think? Lenar Edit this bug report at http://bugs.php.net/?id=14112edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #14112 Updated: sprintf_array()
ID: 14112 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Feature/Change Request Operating System: Linux PHP Version: 4.1.0RC1 New Comment: Your solution seems fine to me. It doesn't change the functionality I requested, so no objections. Previous Comments: [2001-11-19 06:47:50] [EMAIL PROTECTED] I would guess that implementing it as a native PHP function would be at least 2x as fast. I suppose the issue now is finding out if the core PHP developers consider the function to have enough value to add it. My personal, non-core developer, opinion is that I don't like the idea of adding this function. Perhaps instead we could overload the current implementations of printf and sprintf so that they can accept a single-dimension array as the second parameter (and in this case, final, parameter)? [2001-11-19 06:11:24] [EMAIL PROTECTED] Yes something like this should work. But it's not as fast as it could be. And I personally like when thins are as fast as possible. [2001-11-19 05:53:41] [EMAIL PROTECTED] Why not just build your own function? function sprintf_array ($format) { if (1 == func_get_args () ) { return sprintf ($format); } $argv = func_get_args (); return call_user_func_array ('sprintf', $argv); } (Not tested, but something like this should work. :) [2001-11-19 05:46:48] [EMAIL PROTECTED] Hi, During development i felt great need for function that could be named sprintf_array() That is ordinary sprintf() which would be able to take arguments from array: string sprintf_array(string format, array args) What do you think? Lenar Edit this bug report at http://bugs.php.net/?id=14112edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Removing ext/sablot from 4.1?
Sterling Hughes wrote: Hey, Just sending out a feeler message, while I still have some motivation to argue about the future of XSLT (ie, I have other work I should be doing ;) -- I'd like to move ext/sablot from the standard PHP distribution, and update the PHP documentation to the new XSLT API for PHP 4.1 for four reasons: 1) Its a bit confusing with two extensions doing the same thing 2) ext/xslt has become almost stable :) No really... At least it is much more stable than ext/sablot. 3) A bit of an encouragement for users to switch to the new xslt extension which is not only cleaner, but its also signifigantly improved with regards to features and speed. 4) 4.1 is a bit of a compatibility breaking release, I don't know when I'll get the chance again (PHP 5?) -Sterling +2 for removing. At least some package maintainers will realize then that it's gone and start looking for replacement. Speaking about Debian here :) -- Lenar Lõhmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: XSLT Extension and paths
Sebastian Bergmann wrote: Sebastian Bergmann wrote: ?php $p = xslt_create(); $res = xslt_process($p, 'test.xml','test.xsl'); if(!$res) echo xslt_error($p); echo $res; xslt_free($p); ? This snippet triggered some memories. With 4.1.0rc1-cgi (maybe under apache too, haven't tested) .. if you leave xslt_free() out then after script has finished and php is shutting down .. it segfaults. Lenar -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
RE: [PHP-DEV] ?php= ? sytanx again
[EMAIL PROTECTED] wrote: On Fri, 16 Nov 2001, Marc Boeren wrote: Let's take this one step further (into absurdity ;-) and also add script language=php= %var; /script Why not remove this utter crap at all? =) (I know about BC, but I really think these tags are stupid). Maybe something to remove (or add a warning) in PHP 4.2.0 ? Derick Do not remove script language=php/script It's very useful in some cases. For example if you transform xsl/xml into html with embedded php to execute later. This is not utter crap. -- Lenar Lõhmus Vision Group -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] md5sum() patch
Alessandro Astarita wrote: Il 17:25, giovedì 15 novembre 2001, [EMAIL PROTECTED] ha scritto: Then this will do the same: $sum = `md5sum filename`; Do I have to depends on the external executable? ...in my opinion is not the right way. +1 to the function -- Lenar Lõhmus Vision Group -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Bug #14042 Updated: Comment inside if statement causes parse error
You're messing with the ASP-tags. The line echo ta contains % which jumps out of PHP-mode. Then, if EOF has been reached, the brackets haven't been closed, which results in that parse-error. So, edit your php.ini and disbable asp-tags or use width=50% (which is better anyway). It's a little bit strange you can jump into php mode with '?php' and jump out of that mode with '%'. IMO there should be some check in place - so that mixing different tags is not allowed this way. Lenar -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Re: Bug #14036: Segfault when using multipart form data
Rasmus Lerdorf wrote: Well, file uploads do work in general in PHP 4.0.6 or the whole world would be screaming. So there is something specific to your test case or your system that is causing this. Well I'm using 4.1.0rc1 on linux 2.4.8 (debian unstable). And there was 1 case with file uploads not working (apache crashed). Since I didn't have time to test this and our customer said it's not so important to have file upload form, I removed related code and didn't test it more nor searched for more info on cause. Bud it didn't work for sure. Strange crashes (not always, let's say 1 out of 5 submits). I remember creating a very simple form to test it. And it worked 100%. So it seems the bug is dependent on how you handle that upload. Lenar -Rasmus On Tue, 13 Nov 2001, Hans Rakers wrote: As i reported in my bug report, i can reproduce this problem with 4.0.6 and current cvs. Hans Rakers At 15:18 12-11-2001 -0800, you wrote: This code has changed significantly in current CVS. 4.0.6 and 4.1.0RC1 should not have the problem. -Rasmus On Tue, 13 Nov 2001, Yasuo Ohgaki wrote: [EMAIL PROTECTED] wrote: From: [EMAIL PROTECTED] Operating system: Linux 2.2.20 and 2.4.14 PHP version: 4.0CVS-2001-11-12 PHP Bug Type: Reproducible crash Bug description: Segfault when using multipart form data When submitting a form with enctype multipart/form-data Apache childs segfault. Weird thing is that the problem is not reproducible when compiling PHP with debugging enabled. I have tried PHP-4.0.6 and CVS snapshot php4-20020600. 4.1.0RC may not have this problem. I cannot reprocude with 4.1.0. I need to know to the script/config to be sure, though. -- Yasuo Ohgaki -- Lenar Lõhmus Vision Group -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: [PATCH] sablotron scheme/sax handlers fix
It seems that nobody liks handling bug reports/patches regarding xslt module. Nevertheless it's buggy and partly unusable, so it would be very nice if somebody could update cvs with this patch (maybe check before, since I'm not C programmer) before next release of php. Thank you in advance, Lenar Lenar Lõhmus wrote: Hi, Since nobody responded to my bugreport about sax/scheme handlers not working in php and since i needed them in a working state I tried to understand the source and finally generated a fix. So this patch makes ext/xslt working when sablotron and scheme/sax handlers are used. Hope it finds it's way to cvs. Lenar Lõhmus [EMAIL PROTECTED] -- Lenar Lõhmus Vision Group -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #13779 Updated: Tranformations do not work
ID: 13779 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Old Status: Open Status: Closed Bug Type: XSLT related Operating System: Debian PHP Version: 4.1.0RC1 New Comment: Ignore. Messed the order of xsl and xml parameters. Previous Comments: [2001-10-21 10:02:12] [EMAIL PROTECTED] Consider following script (xslt extension loaded): ?php $xslt = xslt_create(); $args = array( /_xsl = 'xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform; xsl:template match=test xsl:value-of select=./ /xsl:template /xsl:stylesheet', /_xml = 'testTestValue/test' ); $data = xslt_process($xslt, arg:/_xsl, arg:/_xml, NULL, $args); echo EXPECTED RESULT:\nTestValue\n; echo REAL RESULT:\n . $data . \n; xslt_free($xslt); ? And when you run it you get: EXPECTED RESULT: ?xml version=1.0 encoding=UTF-8?TestValue REAL RESULT: ?xml version=1.0 encoding=UTF-8?testTestValue/test same with sabcmd works correctly: sabcmd 'arg:/_xsl' 'arg:/_xml' result.dat \ '/_xsl=xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform;xsl:template match=testxsl:value-of select=.//xsl:template/xsl:stylesheet' \ '/_xml=testTestValue/test' Edit this bug report at http://bugs.php.net/?id=13779edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #13776: unable to compile XSLT as shared mod
From: [EMAIL PROTECTED] Operating system: Debian PHP version: 4.1.0RC1 PHP Bug Type: XSLT related Bug description: unable to compile XSLT as shared mod It seems that it isn't possible to compile php's xslt extension as shared module. This is bad because until it is possible distros can't package it separately. For example right now debian comes with php4-sablot extension which uses old ext/sablot code. Since all new development is done with xslt sablot backend that package is unusable. In order to make php4-xslt package there must be way to compile it as shared extension. Configure script seems to understand --enable-xslt=shared but real linking isn't done. -- Edit bug report at: http://bugs.php.net/?id=13776edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #13776 Updated: unable to compile XSLT as shared mod
ID: 13776 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: XSLT related Operating System: Debian PHP Version: 4.1.0RC1 New Comment: It seems it works when using additionaly --enable-shared=xslt Previous Comments: [2001-10-21 08:21:05] [EMAIL PROTECTED] It seems that it isn't possible to compile php's xslt extension as shared module. This is bad because until it is possible distros can't package it separately. For example right now debian comes with php4-sablot extension which uses old ext/sablot code. Since all new development is done with xslt sablot backend that package is unusable. In order to make php4-xslt package there must be way to compile it as shared extension. Configure script seems to understand --enable-xslt=shared but real linking isn't done. Edit this bug report at http://bugs.php.net/?id=13776edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #13779: Tranformations do not work
From: [EMAIL PROTECTED] Operating system: Debian PHP version: 4.1.0RC1 PHP Bug Type: XSLT related Bug description: Tranformations do not work Consider following script (xslt extension loaded): ?php $xslt = xslt_create(); $args = array( /_xsl = 'xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform; xsl:template match=test xsl:value-of select=./ /xsl:template /xsl:stylesheet', /_xml = 'testTestValue/test' ); $data = xslt_process($xslt, arg:/_xsl, arg:/_xml, NULL, $args); echo EXPECTED RESULT:\nTestValue\n; echo REAL RESULT:\n . $data . \n; xslt_free($xslt); ? And when you run it you get: EXPECTED RESULT: ?xml version=1.0 encoding=UTF-8?TestValue REAL RESULT: ?xml version=1.0 encoding=UTF-8?testTestValue/test same with sabcmd works correctly: sabcmd 'arg:/_xsl' 'arg:/_xml' result.dat \ '/_xsl=xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform;xsl:template match=testxsl:value-of select=.//xsl:template/xsl:stylesheet' \ '/_xml=testTestValue/test' -- Edit bug report at: http://bugs.php.net/?id=13779edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Apache 2.0.18 API does not match sapi_apache2.c code
Stig Venaas [EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... change might be for Apache 2 newer than 2.0.18, but 2.0.18 is the latest I can find. I think we should support the latest Apache 2 that people are http://dev.apache.org/dist/ able to download, which seems to be from June. Or is it possible for mortals to download more recent Apache somehow (CVS access?)? Stig -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] why does exit() print its argument?
Web scripting language, I think that the chances of people expecting this I use it as a system scripting language and vote +1 for numeric arguments to work the expected way. I want to use it as a system programming language. But fork() is missing :) Anyway this shows we use php for many differenet applications and purposes. That's not the reason to break BC. Lenar -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] apache 2 environment
Hi, Can anybody say something about progress made finding and fixing the unfortunate problem about apache 2 and php 407-dev, where server and environment variables are not accessible under php? With regards, Lenar Lohmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Bug #12032: PHP dumps core when using a 3x derived class from a series of included files
This might be realted to bug I reported about parent:: not working with 3 or more stage inheritance when include()s are used. It was said by Zeev that it is now fixed in CVS (for 4.0.7 i think, it din't reach 4.0.6 in time). Lenar [EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... From: [EMAIL PROTECTED] Operating system: Debian/GNULinux unstable PHP version: 4.0.6 PHP Bug Type: Reproducible crash Bug description: PHP dumps core when using a 3x derived class from a series of included files see http://patrick.jordan-smith.org/junk/example.tar.gz for scripts to reproduce this error. The file crashes.php when loaded from the browser will crash php, the file doesntcrash.php won't. It seems from looking at a backtrace that php gets itself into a infinite loop. I don't include a backtrace because it's 19421 entries long. This is using the php4 package from debian -- Edit bug report at: http://bugs.php.net/?id=12032edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: Bug #12040: PHP dumps core when using a 3x derived class from a series of included files
in PHP 4.0.5 this resulted in engine error. Zeev said it is fixed in CVS, so right now I can't compile CVS to check it out, but maybe you can. And does this crash disappears when you use explicit class names instead parent:: (a::, b:: ... etc)? In my case it helped. Lenar [EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... From: [EMAIL PROTECTED] Operating system: Debian/GNULinux unstable PHP version: 4.0.6 PHP Bug Type: Reproducible crash Bug description: PHP dumps core when using a 3x derived class from a series of included files This is bug #12032 but I don't have a password to add more info to it (didn't enter one, was rushed) Yes,it seems to have to do with the calling of parent object fuctions in files incuded from files that have been included. Following are 3 php files that reproduce it,you run the D.PHP file. If the a.php file is included in d.php instead of b.php, there is no problem. // -- A.PHP -- ? class a { function a() { -_constructor(); } function _constructor() { } } ? // -- EOF -- // -- B.PHP -- ? include("a.php"); class b extends a { function _constructor() { parent::_constructor(); } } class c extends b { function _constructor() { parent::_constructor(); } } ? // -- EOF -- // -- D.PHP -- ? { function _constructor() { parent::_constructor(); } } class c extends b { function _constructor() { parent::_constructor(); } } ? // -- EOF -- // -- D.PHP -- ? include("b.php"); = new c; ? // -- EOF -- -- Edit bug report at: http://bugs.php.net/?id=12040edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Bug #11611 Updated: nl2br() outputting invalid brtags
when the rest of your code is just generating HTML compliant output, not XHTML. Ok, somebody can always use something like str_replace(\n, br, $text) to get the old functionality. What if the rest of your code is generating XHTML? It's better to assume the more strict syntax, especially considering that nobody has yet found (to my knowledge) a browser where br / doesn't work. Yes, agree, but this change has happend not much time ago, and I think it's one's responsibility to maintain the behavior what it used to be. Even more if the old syntax was generating standard compliant code (and HTML4 is a standard). Still, we must evolve, so a syntax like nl2br(string text [boolean html4]) would give the most up to date behaviour of this function, giving somebody an option to get the old behaviour when it's really neccessary. And ... you don't know a browser where br / dowsn't work? But there might be one ... one's own specific implementation where creator haven't thought up possibility that br might be br / one day. Since it is not neccessary for HTML to recognize / in the end of single tag then we can't really blame him. lenar. Matt -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Bug #11611 Updated: nl2br() outputting invalid br tags
Derick Rethans [EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... On Fri, 22 Jun 2001, lenar wrote: Shouldn't there be an optional flag to nl2br to change the behavior of function to what it used to be. Just there's no point in br / like tags when the rest of your code is just generating HTML compliant output, not XHTML. br / is HTML compliant too, and there is no single browser who doesn't get it. But it's not the behaviour up to today of this function. And I suggested only optional flag for getting old behavior. Like nl2br(string text [boolean html]). And to avoid rest, I say it more clearly: I agree it should generate XHTML _by_default_. lenar -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Internal Working -- performance question
I don't know if MySQL supports HEAP tables under Win32 but otherwise I suggest using them for IPC in your PHP applications. We use it, and so far it has worked great for us (very good perfomance) using it combined with mysql_pconnect(). Lenar James Moore [EMAIL PROTECTED] wrote in message 000f01c0fbcb$e522a640$010a@zeus">news:000f01c0fbcb$e522a640$010a@zeus... a) Is there a faster way to send data between 2 processes, that will work with PHP, and is supported by Windows and *nix. How about abstacting it, under Linux use shared mem (should be fastest) if its avalible, other wise use sockets then If that's not avalible use database/file version. - James -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Bug #11645 Updated: tempnam( ) does not use TMP environment variable
[EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... ID: 11645 Updated by: sniper Reported By: [EMAIL PROTECTED] Old-Status: Open Status: Analyzed Old-Bug Type: Filesystem function related Bug Type: Documentation problem Operating system: PHP Version: 4.0.6 Assigned To: Comments: This is documentation problem. The given path takes precedence over TMPDIR environment variable (not TMP environment variable as it is in docs) This should be platform dependent. On Win32 it's usually TEMP (or TMP too with later wdozes) environment variable which specifies the location of directory for temporary files. TMPDIR is used on linux (maybe other *nix too, don't know - propably). This is suggestion for implementation/documentation change. lenar. From php4/main/php_open_temporary_file.c: /* {{{ php_open_temporary_file * * Unlike tempnam(), the supplied dir argument takes precedence * over the TMPDIR environment variable * This function should do its best to return a file pointer to a newly created * unique file, on every platform. */ This makes the function behave the same way on every system. Previous Comments: --- [2001-06-24 14:17:51] [EMAIL PROTECTED] The PHP manual states: The behaviour of the tempnam() function is system dependent. On Windows the TMP environment variable will override the dir parameter. However testing the following when my TMP env variable is set to WINDOWSTMP: print tempnam('/','z') the result is: C:zB312.TMP This used to work fine in PHP 4.0.4pl1. Thanks again, John --- ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=11645edit=2 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Bug #11611 Updated: nl2br() outputting invalid br tags
Uh, ok. I give up. I just wasn't able earlier to find this paragraph from spec. Sorry if I disturbed you too much :) lenar. Browsers should ignore things which they don't recognise: (from http://www.w3.org/TR/1999/REC-html401-19991224/html40.txt, paragraph 7.2) Note. As of the 24 December version of HTML 4.01, the HTML Working Group commits to the following policy: * Any changes to future HTML 4 DTDs will not invalidate documents that conform to the DTDs of the present specification. The HTML Working Group reserves the right to correct known bugs. * Software conforming to the DTDs of the present specification may ignore features of future HTML 4 DTDs that it does not recognize. This was also the case with earlier versions of HTML. regards, Derick Rethans -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] Bug #11611 Updated: nl2br() outputting invalid br tags
Shouldn't there be an optional flag to nl2br to change the behavior of function to what it used to be. Just there's no point in br / like tags when the rest of your code is just generating HTML compliant output, not XHTML. Ok, somebody can always use something like str_replace("\n", "br", $text) to get the old functionality. lenar. [EMAIL PROTECTED] wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... ID: 11611 Updated by: sniper Reported By: [EMAIL PROTECTED] Old-Status: Closed Status: Bogus Bug Type: Strings related Operating system: PHP Version: 4.0.5 Assigned To: Comments: Could this be even more bogus? :) Previous Comments: --- [2001-06-22 04:39:51] [EMAIL PROTECTED] It's XHTML compliant --- [2001-06-21 22:13:10] [EMAIL PROTECTED] put this into a test php file: ?php $temp = "this isnna testn"; printf("%s", nl2br($temp)); ? and you should get this as output from your webserver: this isbr / br / a testbr / I have confirmed this to be also an issue in the 4.0.6 release candidates, but I do not know when this all of a sudden became an issue. I'd like to know why it's creating br / tags instead of br tags :) --- ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=11611edit=2 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11589 Updated: classes and includes
ID: 11589 User Update by: [EMAIL PROTECTED] Status: Open Bug Type: Scripting Engine problem Operating system: Debian/Linux PHP Version: 4.0.5 Description: classes and includes The bug exists in 4.0.6 RC3 Previous Comments: --- [2001-06-20 14:59:26] [EMAIL PROTECTED] First, my stripped down code that works: ? class a { function make($params) { } } class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? now, when i remove the definition of class 'a' to another file and include the file like this: file1.php: ? class a { function make($params) { } } ? file2.php: ? include ./file1.php; // or require - no difference class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { // this gets called forever and generating warnings parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? then i get message 'Warning: Missing argument 1 for make()' ... the code is same ... but working differently. at least with my php 4.0.5. so i think this is a bug. --- Full Bug description available at: http://bugs.php.net/?id=11589 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] 4.0.6 Packaged!
I'd like to see Zeev's fix to #11590 in 4.0.6 The same to #11589 .. in my project it's very important. Ok, it's just my project :( but when i need to hardode class names instead of just specifinig parent:: - it make's things more complex than they should be. lenar. I just tested it, and it still segfaults. -Rasmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11609: documentation packaging format
From: [EMAIL PROTECTED] Operating system: debian PHP version: 4.0 Latest CVS (2001-06-21) PHP Bug Type: Documentation problem Bug description: documentation packaging format Another documentation packaging format would be nice. I'm talking about bz2 .. it makes sense: If you package those html files with gzip you get approx 900kb file, but packaging with bz2 makes archive only ~600kb in size. Heh and i'm not evevn talking about zip format - the size coming out from that is awful. -- Edit Bug report at: http://bugs.php.net/?id=11609edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] parent and grandparent functions
Hello, Sorry to write in dev, but i consider this a weakness of php. Something needs to be changed. Ok, maybe thereis a solution right now existing in PHP, but i'm unaware of it. Skip to the problem I have three classes: class a { function make() { // some code } } class b extends a { function make() { // some code parent::make(); } } class c extends b { function make() { // some code parent::make(); } } now the class 'c' is instantiated and the member function 'make' is called. All works up to the point where 'b'::make calls parent::make(). It seems to call itself :(. I can understand this is logical behaviour since it's still an instance of class c, so parent:: is still b::, but how should I call that grandparent's make()??? This doesn't seem like a good OOP. For example delphi's 'inherited' works relative to the class it's used in and it is way more useful than php's parent::. is there any elegant solution(s) to my problem? Lenar Lõhmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
Re: [PHP-DEV] parent and grandparent functions
An update. When I hardcode the parent class name (example below) then it works. But if I decide to change the class inheritance hierarchy I need to manually revise all my existing classes. So where is the flexibility? Furthermore .. I found a note in php manual stating that in php405 get_parent_class also accepts class name string as it's only parameter. So when corectly passing parent class names to each make I'll be able to do something like that: function make($this_name) { $parent = get_parent_class($this_name); eval($parent::make('$parent')); } Unfortunately, the only thing I get form get_parent_class when calling it with string parameter is quite empty string (and I have 4.0.5). More. I think it would be wise to implement an class name like parent, for example 'inherited' which calls always the real parent class (that is the parent class of the class where such keyword is used not the parent class of current object instance) method (or the method of parent's parent if the method is not overriden in parent etc, generating an error if the method is not found in entire class inheritance hierarchy).. I hope you understood, since enhlish is not my primary language. If you need me to elaborate a bit then ask. Lenar Lenar Lõhmus [EMAIL PROTECTED] wrote in message 9gpn2a$oc6$[EMAIL PROTECTED]">news:9gpn2a$oc6$[EMAIL PROTECTED]... Hello, Sorry to write in dev, but i consider this a weakness of php. Something needs to be changed. Ok, maybe thereis a solution right now existing in PHP, but i'm unaware of it. Skip to the problem I have three classes: class a { function make() { // some code } } class b extends a { function make() { // some code parent::make(); // instead write: a::make();// hardcoded } } class c extends b { function make() { // some code parent::make(); // instead write: b::make();//hardcoded } } now the class 'c' is instantiated and the member function 'make' is called. All works up to the point where 'b'::make calls parent::make(). It seems to call itself :(. I can understand this is logical behaviour since it's still an instance of class c, so parent:: is still b::, but how should I call that grandparent's make()??? This doesn't seem like a good OOP. For example delphi's 'inherited' works relative to the class it's used in and it is way more useful than php's parent::. is there any elegant solution(s) to my problem? Lenar Lõhmus -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Re: [PHP] parent and grandparent member method calls
yes, you were right it works (when you said it works i tested your code out and it definetly works). but this made me more confused than i was before. i commented in the lines in my code that earlier didn't work (replaced them sometime with class names hard coded solution) and it still did _not_ work. ok, made copies of files in action and started to strip them down. First, my stripped down code that works: ? class a { function make($params) { } } class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? now, when i remove the definition of class 'a' to another file and include the file like this: file1.php: ? class a { function make($params) { } } ? file2.php: ? include ./file1.php; // or require - no difference class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { // this gets called forever and generating warnings parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? then i get message 'Warning: Missing argument 1 for make()' ... the code is same ... but working differently.at least with my php 4.0.5. so i think this is a bug. that include in our system is neccessary so to the point it works correctly, i have to hardcode class names. and thank you scott pointing me out (and getting me confused :) ). lenar. scott [gts] [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED]... it looks like your solution *is* elegant... i tried out your code, becuase i was astonished that such a simple thing allegedly wasn't working... and it did work. below is the exact code i had in my text editor, and it executed perfectly. when i called $c-make(), it printed A:: MAKE. ..am i misunderstanding your problem? ? class a { function make() { // some code print A:: MAKE; } } class b extends a { function make() { // some code parent::make(); } } class c extends b { function make() { // some code parent::make(); } } $c = new c(); $c-make(); ? -Original Message- From: Lenar Lõhmus [mailto:[EMAIL PROTECTED]] Sent: 20 June 2001 09:01 To: [EMAIL PROTECTED] Subject: [PHP] parent and grandparent member functions Hello, I hit a wall. No offense, but this OO stuff in PHP is somehat weird, but skip to the problem. I have for example three classes: class a { function make() { // some code } } class b extends a { function make() { // some code parent::make(); } } class c extends b { function make() { // some code parent::make(); } } now the class 'c' is instantiated and the member function 'make' is called. All works up to the point where 'b'::make calls parent::make(). It seems to call itself :(. I can understand this is logical behaviour since it's still an instance of class c, so parent:: is still b::, but how should I call that grandparent's make()??? This doesn't seem like a good OOP. For example delphi's 'inherited' works relative to the class it's used in and it is way more useful than php's way. is there any elegant soultion(s) to my problem? Lenar Lõhmus -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-DEV] Bug #11589: classes and includes
From: [EMAIL PROTECTED] Operating system: Debian/Linux PHP version: 4.0.5 PHP Bug Type: Scripting Engine problem Bug description: classes and includes First, my stripped down code that works: ? class a { function make($params) { } } class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? now, when i remove the definition of class 'a' to another file and include the file like this: file1.php: ? class a { function make($params) { } } ? file2.php: ? include ./file1.php; // or require - no difference class b extends a { function make() { echo WORKS OK; } } class c extends b { function make($params) { // this gets called forever and generating warnings parent::make(); } } class d extends c { function make($params) { parent::make($params); } } $d = new d(); $d-make(whatever); ? then i get message 'Warning: Missing argument 1 for make()' ... the code is same ... but working differently. at least with my php 4.0.5. so i think this is a bug. -- Edit Bug report at: http://bugs.php.net/?id=11589edit=1 -- PHP Development Mailing List http://www.php.net/ To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]