|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34253 COM binary object/array issue (question marks?)
Submitted: 2005-08-25 18:31 UTC Modified: 2013-12-13 07:45 UTC
Avg. Score:4.3 ± 0.9
Reproduced:2 of 2 (100.0%)
Same Version:2 (100.0%)
Same OS:2 (100.0%)
From: inny at core dot fetchnet dot org Assigned:
Status: Open Package: COM related
PHP Version: 5.1.0RC1 OS: Windows 2000
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: inny at core dot fetchnet dot org
New email:
PHP Version: OS:


 [2005-08-25 18:31 UTC] inny at core dot fetchnet dot org
I was translating the following script: is a non-functional translation I had at that time.

If $QueryString ($_SERVER['QUERY_STRING']) contained the proper variables/values, the WMSServer would return a byte-stream/array/whatever (I'm no genius at COM and such) containing a map-image. would return, instead of the image, 8 question marks (????????). I solved this by changing echo($content); into the following:

if (substr($contenttype, 0, 5) == 'image') {
  $image = null;
  foreach ($content As $obj) { // $obj will contain 1 byte each time, echo'ing it would print a decimal which in turn represents an ASCII value. hence chr();
    $image .= chr($obj);
} else {

But this doesn't seem too resource-efficient to me (a run of foreach for every byte), and I doubt it's an intended work-around (the ?'s really got me puzzled, I'd have expected an error message).

Anyway, seeing as I needed to use chr(); with foreach, this seems related to a fixed bug #15782:

Maybe you were aware of all of this.. Maybe not. Cheers.

Reproduce code:
$WMSService = new COM("DemisWMSConnect.Service");
$MapServer = $WMSService->WMS($wms);

if (!is_object($MapServer)) {
} else {
	$content     = new VARIANT(null);
	$contenttype = new VARIANT(null);
	$return = $MapServer->WMSRequest($QueryString, $content, $contenttype);
	header('Content-type: '.$contenttype);


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2005-08-25 18:37 UTC] inny at core dot fetchnet dot org
FYI, source of a now-operational version here:

Non-operational script as .phps file:
 [2005-08-26 11:16 UTC] inny at core dot fetchnet dot org
I was adding support for PHP4 to the script, which made me wonder: if binary arrays are meant to be received like this, what would be the fastest way to reformat them?

	foreach ($content As $obj) {
	// or foreach($content->value As $obj) in PHP4
	  $image .= chr($obj);

or maybe something like

	function rchr($v, $w) {
	  $v .= chr($w);
	$image = array_reduce($content, rchr);
	// or $image = array_reduce($content->value, rchr); in PHP4

or something else?

 [2005-08-26 11:56 UTC] inny at core dot fetchnet dot org
"Amusingly" enough, the array_reduce method didn't work for PHP5. I guess that makes sense though.

-- Oh don't worry, I'm having lots of fun (on my own) in my own little thread already.
 [2005-08-26 15:01 UTC]
Assigned to maintainer.

 [2006-09-04 10:51 UTC] najath at onlnet dot com
hi i am using 5.1 PHP and MYSQL

my project is to store images and retrive binary values and convert to an image format again 

i have inserted the binary values to the feild and i have retrived also but always i am getting the binarys not the image. plesae help me 

print ("<img src=". $row['bi']."/>");
 [2013-12-13 07:45 UTC]
-Status: Assigned +Status: Open -Assigned To: wez +Assigned To:
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Thu Jan 23 23:01:23 2020 UTC