Sziasztok,
Alant van egy php szkriptem, ami egy db pdf-et készítene/fűzne össze több db feltöltött ps/pdf fájlból, de a gyakorlatban nem igazán működik jól.
A gond az, hogy >3M méretű feltöltött fájlból csak akkor késziti el a pdf-et, ha a https://localhost/pdfservice.php fájlból hívom meg (azaz a helyi gépről).
Ha egy távoli gépről, a https://www.foo.bar/pdfservice.php-ként érem el, akkor valamiért csak 3M feltöltött fájlméret alatt működik; egyébként pedig még hibaüzenetet sem kapok, csak a böngésző timeout-ol.
Nem tudom, hogy valóban a szkript-e a hibás, de az egyetlen hibaüzenet amit bárhol is találok, az szkript hibára utal:
[Mon Feb 19 22:44:25 2007] [error] [client 196.227.41.83] PHP Notice: Use of undefined constant name - assumed 'name' in /srv
/www-ssl/htdocs/pdfdownload.php on line 31, referer: https://www.foo.bar/pdfservice.php
[Mon Feb 19 22:44:32 2007] [error] [client 196.227.41.83] PHP Warning: unlink("/tmp/phpbnoI5F" ) [function.unlink]:
No such file or directory in /srv/www-ssl/htdocs/pdfdownload.php on line 59, referer: https://w
ww.foo.bar/pdfservice.php
A furcsa csak az, hogy ez a hibaüzenet (legalábbis az első) akkor is ott van, amikor elkészül a pdf. Nem magyarázza meg azt sem, hogy a localhost-on miért működik rendesen a pdf készítő php szkript.
Mindenesetre; segítenétek debugolni ezt a szkriptet, úgy hogy
a) a fenti hibák megszűnjenek
b) kapjak valami visszajelzést arról, hogy miért nem készül el a pdf, mert jelenleg az ie csak egy "timeout" üzenetet ad, az Opera még azt se, csak vár az idők végezetéig.
Ime a szkript:
function print_message ($s)
{
die ('Hiba!' . $s . '');
}
// Check that a file was uploaded
$fajlok="";
if (!count ($_FILES))
print_message ('Nem toltottel fel egy fajlt sem!');
while(list($key,$value) = each($_FILES[infile][name]))
{
if(!empty($value)){ // this will check if any blank field is entered
if ($_FILES[infile][error][$key] || !eregi ("application/(postscript|pdf)$",$_FILES['infile']['type'][$key])){
print_message ('Sikertelen fajl feltoltes, vagy nem megfelelo tipusu feltoltott fajl!');
}
$tmpfajlok .= '"' . $_FILES[infile][tmp_name][$key] . '" ';
$mergedtmpfajl = $_FILES[infile][tmp_name][$key];
$fajlnev = $_FILES[infile][name][$key];
}
}
// Try running it through Ghostscript
exec ('/usr/bin/gs -sDEVICE=pdfwrite -r200 -sOutputFile=' . $mergedtmpfajl . '.pdf -dNOPAUSE -dBATCH ' . $tmpfajlok, $a, $n);
if ($n)
print_message ('Unable to convert file. Please ensure that you have used the proper format and try again.');
// First, output headers that tell the browser the type of the file
// we are outputting, how long it is and how we want it displayed
// The Content-Disposition header also allows us to specify a filename
header ('Content-Type: application/pdf');
header ('Content-Disposition: attachment; filename="' . $fajlnev . '.pdf"');
header ('Content-Length: ' . filesize ($mergedtmpfajl . '.pdf'));
// Dump the PDF file and delete it from the PHP folder
readfile ($mergedtmpfajl . '.pdf');
unlink ($tmpfajlok);
A teljesség kedvéért szívesen feltölteném a pdfservice.php-t is, ami a fájlokat feltölti, de úgy látom, a fórum motorja értelmezi a parancsait, és megjeleníti a form jeleníti meg a forrása helyett, úgyhogy ezt most inkább mellőzném.
Vagy van esetleg valamilyen tag, ami közé php forráskódot tudnék ide beszúrni?