Bug #18408 [Com]: printer_list crashes PHP

From: Date: Thu, 17 Apr 2014 07:04:56 +0000
Subject: Bug #18408 [Com]: printer_list crashes PHP
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-185315@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=18408&edit=1

 ID:                 18408
 Comment by:         lefteris-l at idata dot gr
 Reported by:        info at Frenck dot nl
 Summary:            printer_list crashes PHP
 Status:             Wont fix
 Type:               Bug
 Package:            Unknown/Other Function
 Operating System:   WinXP
 PHP Version:        4.2.1
 Block user comment: N
 Private report:     N

 New Comment:

Hello,

To whoever might still be using this i've come across the same issue.

For some reason using 

$printer_list = printer_list(PRINTER_ENUM_LOCAL); TWICE in the same page

seemed to be working fine for me and showing up all printers EXCEPT when i would add more lines to
the code it would crash.
And by lines i mean a couple of more characters in an HTML text could be enough. (Not even php
code).

Anyway I then moved from Mysql to Mysqli and boom.
Stopped working. I played around some more time and now i use

$printer_list = printer_list(PRINTER_ENUM_LOCAL |PRINTER_ENUM_SHARED);

once again TWICE. Problem is now it only shows me 1-2 printers.
I can access DESCRIPTION and COMMENT just fine the same way i'm accessing the NAME
    foreach ($printer_list as $printerAr)
    {
    	$name = $printerAr["NAME"];
    ... }
Hope it might save some time someone else in the future.
Lefteris


Previous Comments:
------------------------------------------------------------------------
[2013-05-14 14:10:41] fziu02 at gmail dot com

You can use AJAX, and everything works fine...

PHP // lsprt.php
<?php
    $getprt=printer_list( PRINTER_ENUM_LOCAL );
    echo json_encode($getprt);
?>

HTML
<script>
$.post('lsprt.php', function(data) {
	value = JSON.parse(data);
	for (val in value) {
		$('#asd').append('<option value="'+ value[val]['NAME']
+'">'+ 
value[val]['NAME'] +'</option>');
	}
});
</script>

<select id="asd"></select>

------------------------------------------------------------------------
[2003-06-14 11:43:52] saidyjade at hotmail dot com

windows nt40 sp6
windows 2000 pro sp3 + pre-sp4 updates @ 20030609

PHP 4.3.2 / Apache 1.3.27 / php4apache.dll 
extension: php_printer.dll

The extension does appear to be in the category "who cares".

only crashes only the array keys "DESCRIPTION" and "COMMENT"

$list_printers = printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED);

// get the name of the first returned printer
$this_printer = $list_printers[0]["NAME"];

// open a connection to your printer
$my_printer = printer_open($this_printer);

.. blah blah


The output of var_dump (as an example)

var_dump( printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED) );

array(1) {
  [0]=> array(3) {
  ["NAME"]=> string(14) "Canon BJC-4550"
  ["DESCRIPTION"]=> string(30) "Canon BJC-4550,Canon BJC-4550,"
  ["COMMENT"]=> string(0) "This is my funky printer!" } }


As you can see var_dump (under variable functions in the manual) shows and/or retrieves the corrent
information but if you try to place into a variable or read the variable it crashes with an "I
am a windows product and cannot read the memory space correctly cause I sux" message.

so as long as you do not get the comment or description it will list your printers.

if you wish to specify a network printer you need lots more slashes.. example:
\\\\my-network-computer\\my-printer-share

cher cher

------------------------------------------------------------------------
[2002-12-19 23:17:17] iliaa@php.net

Appears to be an abandoned PECL extension.

------------------------------------------------------------------------
[2002-07-18 05:57:50] info at Frenck dot nl

Hi,

I'm having troubles using the printer_list function.
When I try to get a list of all the printers installed
on the machine where the script is running, php crashes.

When I use this code, PHP crashes:

  printer_list(PRINTER_ENUM_LOCAL);

When I use this codes, PHP does not crash, but it returns
a empty array.

  printer_list(PRINTER_ENUM_LOCAL|PRINTER_ENUM_SHARED);

  printer_list(PRINTER_ENUM_SHARED);

When I accessing the script with my browser (trough apache) apache crashes, when I running it as an
command line script, PHP.exe crashes.

Altough, printing to the default printer with the example listed at 'http://www.php.net/manual/en/function.printer-draw-text.php'
works fine.

I'm running PHP 4.2.1 (in apache it's the NON-CGI version running) on windows XP
Professional Dutch edition.

Microsoft Visual C++ tells me there is an access violation in php.exe (php4ts.dll)

Is there a workaround for this problem?
If you need more information, than feel free to contact me.

With kind regards,

Franck Nijhof

PS: Sorry for my bad english.

------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=18408&edit=1


Thread (7 messages)

« previous php.bugs (#185315) next »