|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-07-18 05:57 UTC] 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. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 04 19:00:02 2025 UTC |
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 cherYou 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>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