ID: 27428 User updated by: black at scene-si dot org Reported By: black at scene-si dot org Status: Open Bug Type: Strings related Operating System: debian unstable PHP Version: Irrelevant New Comment:
i've also tried using mysql_real_escape_string, but it didnt solve anything (for long anyway, the garbage output came back at the worst of moments.) the phpinfo above is still valid - any help would be appreciated, as i really dont know what to do Previous Comments: ------------------------------------------------------------------------ [2004-02-27 20:31:55] black at scene-si dot org Description: ------------ The following has been tested on: php-4.3.2 php-4.3.4 php-4.3.5rc2 php-4.3.5rc3 php4-STABLE-200310032330 php4-STABLE-200402101030 php4-STABLE-200402272030 with various compile options turned on/off (oracle support & turckmmcache), always giving same result basically with every version of this some or most serialize() calls result in an incorrectlly constructed serialized string... given i only input plaintext, the serialized string must have a length of 6+strlen(original), albeit: ["cache_data"]=> string(9277) "s:9309:"... (oops!) ["cache_data"]=> string(24259) "s:24248:"... (correct.) ["cache_data"]=> string(23850) "s:23881:"... (oops!) ["cache_data"]=> string(224081) "s:224069:"... (correct.) ["cache_data"]=> string(21055) "s:21107:"... (WTF!) ["cache_data"]=> string(19590) "s:19663:"... (wrong) ... http://scene-si.org/test.tgz - 800kb, contains 15Mb output of the reproduce code. http://193.77.198.80/phpinfo.php for phpinfo() Linux dahim 2.4.23-1-686 #1 Sun Nov 30 20:51:10 EST 2003 i686 GNU/Linux (thats the server this runs on). the funny part is, that this code (the same code to generate the entries in condor_dbcache) works also on other servers, also debian, iis, apache-win, redhat, mandrake, openbsd, freebsd.. it only fucked here.. after the serialize is done, the ONLY command it goes trough is mysql_escape_string, so there is no character or other conversions which could explain the wrong length in serialized() output Reproduce code: --------------- <?php mysql_pconnect("localhost","root",""); mysql_select_db("condor"); $query = mysql_query("select * from condor_dbcache"); while ($row = mysql_fetch_assoc($query)) { var_dump($row); var_dump(unserialize($row['cache_data'])); } // unserialize throws out crap after serialized data end Expected result: ---------------- I dont want the "; and crap after it displayed.. but more accurately.. i want serialize to behave propperly here. since i never had this problem, i pressume its a system dependant problem, i guess you'll want this: Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.3/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux Thread model: posix gcc version 3.3.3 (Debian) if you need some other application version or lib version, comment - or atleast tell on what libs this depends. Actual result: -------------- Content starts with ei: 's:9309:"<table wid' and ends with '<br><br>";' ... but the content length is 9277.. the content was input with serialize in the following way: $content = serialize($content); mysql_query("update condor_dbcache set cache_timestamp='".time()."', cache_data='".mysql_escape_string($content)."' where cache_filename='".mysql_escape_string($filename)."'"); filename beeing the correspondant key to this dbcache table. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27428&edit=1