From: markem at airmail dot net Operating system: Windows XP PHP version: 5.2.6 PHP Bug Type: PDF related Bug description: MySQL/PDF clash
Description: ------------ I'm unsure if I have the actual cause - but.... I'm working on a large report. They would like for it to be in PDF. So I'm using PDFLIB. If all of the code is together - the PDF is generated with no problems. Unfortunately, between the pdf_new() and then other pdf commands there is an SQL call to MySQL. When that is finished the error I get back is: PHP Fatal error: Uncaught exception 'PDFlibException' with message 'pdf_open_file(): 6 is not a valid pdf object resource' The #6 is the resource ID (if I put in echo statements to print out $myPDF it prints "6") of the PDF document. So it is like PHP is closing out the PDF document (or maybe just dumping the resource info). Reproduce code: --------------- $myPDF = pdf_new(); pdf_open_file( $myPDF, "" ); # We use a "" if the output is coming pdf_begin_page( $myPDF, 11 * 72, 8.5 * 72 ); # Paper resolution is 72dpi. Always use inches. pdf_translate( $myPDF, 0, 8.5 * 72 ); # Translate where the origin is to the top-left. pdf_scale( $myPDF, 1, -1 ); # Rescale everything. pdf_set_value( $myPDF, "horizscaling", -100 ); # Set the horizontal scaling to -100%. $font = pdf_load_font( $myPDF, "Helvetica","iso8859-1", "" ); if( $font ){ pdf_setfont( $myPDF, $font, -18.0 ); } $theString = "Palliative and Supportive Care Inpatient | Consult List"; pdf_show_boxed( $myPDF, $theString, 20, 50, 500, 20, "center", "" ); pdf_setcolor( $myPDF, "fill", "rgb", 0.9, 0.9, 0.9, 0.0 ); pdf_rect( $myPDF, 20, 50, 300, 20 ); pdf_fill_stroke( $myPDF ); pdf_end_page( $myPDF ); pdf_set_parameter( $myPDF, "openaction", "fitpage" ); pdf_close( $myPDF ); $buf = pdf_get_buffer( $myPDF ); $len = strlen( $buf ); header( "Content-Type:application/pdf" ); header( "Content-Length:$len" ); header( "Content-Disposition:inline; filename=DailyRpt.pdf" ); echo $buf; pdf_delete( $myPDF ); Expected result: ---------------- The above code works so long as it is all together. I get a single PDF page which reads "Palliative and Supportive Care Inpatient | Consult List". Actual result: -------------- However, if an SQL command is sent to the database between the "pdf_new()" and the "pdf_open_file()" commands, no PDF document is generated and Apache gives the above error. Example SQL command: $sql = <<<END_OF_SQL SELECT distinct B.VISIT_TYPE, B.Patient_class, A.LAST_NAME, A.FIRST_NAME, A.MIDDLE_NAME, A.MRN, B.PC_MD, B.PC_FELLOW, B.PC_NP, B.ROOM, to_char( B.PC_ADMISSION_DATE, 'MM/DD/YYYY') as VISITS_DATE, B.CONSULTING_MD, A.DOB, B.VISITID, B.PRK, B.PC_NP, N.LAST_NAME AS PC_FELLOW_LN, N.FIRST_NAME AS PC_FELLOW_FN, O.LAST_NAME AS PC_NP_LN, O.FIRST_NAME AS PC_NP_FN, B.VISITID, B.PRK, to_char( A.DOB, 'MM/DD/YYYY') AS ADOB, P.Last_Name as CONSULTING_MD_LAST_NAME, P.HOSPITAL_SERVICE_CD, B.VISIT_COMMENT FROM Patients_VW A, Visits B, PALLIATIVE_PATIENTS L, EMPLOYEES_VW N, EMPLOYEES_VW O, PHYSICIANS_VW P WHERE B.Care_Discharged_Date IS NULL AND ( B.Patient_class = 1 OR B.Patient_class = 5 ) AND B.PC_FELLOW = N.EMPLID( + ) AND B.PC_NP = O.EMPLID( + ) AND B.CONSULTING_MD = P.PHYSICIAN_ID( + ) AND B.PRK = A.PRK AND B.PRK = L.PRK ORDER BY B.ROOM END_OF_SQL; NOTES: This program already works and can produce an HTML report. There are four sections to the report, thus, I have to produce four different pages in the PDF document before I can actually close it. This was the first of the pages. It took me four hours to figure out just what was going on. (Commented out each command separately, then in groups, then started moving the commands around. Finally got to the point of having all of the PDF commands together rather than some at the start of the program, and some in the middle.) Ideas? -- Edit bug report at http://bugs.php.net/?id=45999&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=45999&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=45999&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=45999&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=45999&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=45999&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=45999&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=45999&r=needscript Try newer version: http://bugs.php.net/fix.php?id=45999&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=45999&r=support Expected behavior: http://bugs.php.net/fix.php?id=45999&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=45999&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=45999&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=45999&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=45999&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=45999&r=dst IIS Stability: http://bugs.php.net/fix.php?id=45999&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=45999&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=45999&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=45999&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=45999&r=mysqlcfg