MayaLabs Discussion Area

Suomeksi (Finnish only) => MLInvoiceen liittyvä keskustelu => Topic started by: Morfiini on 17.02.12 - klo:09:43

Title: Virhe laskua tulostettaessa
Post by: Morfiini on 17.02.12 - klo:09:43
Moi,
Asensin VLlaskusta version 1.4.3 ja saan nyt seuraavan virheen laskua tulostettaessa:

"TCPDF ERROR: Some data has already been output, can't send PDF file"

Itse asiassa sama virhe on tullut myös aikaisempien versioiden kanssa, mutta se on yleensä korjaantunut XAMPP:n APACHE:n uudelleenkäynnistyksellä. PHP memory-limit-asetus on 128M.

Olisiko muilla ollut samanlaista virhettä, ja siihen ratkaisua?
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 18.02.12 - klo:10:57
Vielä lisäys edelliseen, että lähetettäessä lasku ohjelmasta sähköpostin liitetiedostona, se onnistuu ihan normaalisti. Sen sijaan kaikki mitä yrittää tulostaa laskulta pdf:nä näytölle, ne epäonnistuvat ja tulee tuo sama virheilmoitus kuin yllä.
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 18.02.12 - klo:23:10
Tuo tarkoittaa, että selaimelle on lähetetty jotain ennen PDF:n valmistumista, jolloin PDF:ää ei enää pystytä lähettämään. Tuliko ennen virheilmoitusta mitään muuta näytölle?

--Ere
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:06:42
Ei tule mitään muuta näytölle ennen virheilmoitusta. Jos on jotain logifilejä mitä voisin ottaa liittyen tähän, niin voin kopioida niitä lähempään tarkasteluun.

Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:08:24
Lisätietoa vielä threadiin, että asensin tuon version 1.4.3 uudella tietokannalla ilman vanhojen tietojen tuontia versioon, eli ns. puhtaalta pöydältä. Asensin vielä varmuuden ja testauksen vuoksi aikaisemman käyttämäni version vllaskusta (1.3.3) ja tässä PDF:n tulostus toimii normaalisti samalla koneella.
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:10:11
Tuleeko PHP:n virhelokiin mitään? Jos on Windows-XAMPP:sta kyse, niin oletuksena lienee C:\xampp\php\logs\php_error_log. Onko mitään PHP:n asetuksia rukattu oletuksista? Mulla on yksi XAMPP-testiasennus, jossa en saa virhettä toistettua.

--Ere
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:10:41
Tuohon virhelokiin ei tule mitään, ja tuo antamasi polku on virhelokin oletuksena. Olen rukannut sähköpostiasetuksia php.ini:stä seuraavasti,muuta ei oletusasetuksille ole tehty (paitsi ne mitä oli asennusohjeissa):  

PHP.INI
[mail function]
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
mail.add_x_header = Off
mail.log = "C:\xampp\php\logs\php_mail.log"
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:10:47
Voisit tietty kokeilla poistaa tuon tarkistuksen käytöstä ja katsoa, mitä siitä seuraa. Sillä voisi saada vinkkiä siitä, mistä tuo johtuu. Eli muokkaa tcpdf\tcpdf.php:n riviä 8395 ja kommentoi se vaikka pois käytöstä parilla kauttaviivalla tähän tapaan:


if (ob_get_contents()) {
//$this->Error('Some data has already been output, can\'t send PDF file');
}


--Ere
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:12:03
Kommentoin tuon rivin pois ja tämä ohjeesi auttoi asiaan, eli nyt alkoi toimimaan! Ja PHP:n virheloki pysyy tyhjänä.

Drupal-maailmasta löysin yhden threadin, josta saattaisi olla apua (lopusta kohdat #16-#21) tämän ongelman syihin (koodin tallentaminen ANSI UTF:n sijasta ja ylimääräiset välilyönnit koodissa).

http://drupal.org/node/283950
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:12:13
Voisitko kokeilla vielä vaihtaa tuon yllämainitun rivin tällaiseksi:


$this->Error('Some data has already been output, can\'t send PDF file, contents: ' . ob_get_contents() . '.');


Ja jos ei sillä tule mitään näkyviin, niin vielä tällä:


$this->Error('Some data has already been output, can\'t send PDF file, contents: ' . bin2hex(ob_get_contents() . '.');


Haluaisin saada kiinni sen, mitä tuolla output bufferissa on, niin voisi ainakin varmistaa oikean korjauksen.

--Ere
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:12:14
Hoplaa, jälkimmäisestä puuttui yksi sulku, eli näin:


$this->Error('Some data has already been output, can\'t send PDF file, contents: ' . bin2hex(ob_get_contents()) . '.');
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:13:40
Ensimmäisellä koodinpätkällä vastaus oli seuraava:
"TCPDF ERROR: Some data has already been output, can't send PDF file, contents: ."

Toisella koodinpätkällä vastaus oli seuraava:
"TCPDF ERROR: Some data has already been output, can't send PDF file, contents: efbbbf."
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:19:08
Hmm. Johonkin tiedostoon on jotenkin eksynyt alkuun BOM (byte order marker, UTF-8 -tiedostossa juurikin tuo EF BB BF. Oletko muokannut mitään muuta kuin config.php-tiedostoa? Jos siinä olisi BOM, niin sen pitäisi näkyä muuallakin ongelmina ja varoituksina, joten epäilisin sen olevan jossain toisessa tiedostossa. Paketissa olevissa tiedostoissa noita ei pitäisi olla.

--Ere
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:20:48
Muita tiedostoja en ole muokannut. Mutta arvaas mitä: nyt tein uudelleen "config.php.sample"-tiedostosta uuden "config.php":n ja tämä alkoi toimimaan eli nyt ne kehvelin pdf:t aukeavat. Siis tässä kopioinnissa näyttäisi aikaisemmin käyneen jokin käpy, en vaan keksi että mikä mutta varmaankin syy on käyttäjässä. Editoreina olen käyttänyt Wordpadia ja Notepad++:a. No, joka tapauksessa nyt taas pelittää.
Title: RE: Virhe laskua tulostettaessa
Post by: Ere Maijala on 19.02.12 - klo:20:52
No hyvä, että selvisi, vaikka edelleen hämmentää, miten tuo ei aiheuttanut muita ongelmia. Vähintään PHP:n virhelokissa olisi pitänyt näkyä vaikka mitä varoituksia headereista ym. Joka tapauksessa kiitos kärsivällisyydestä selvittelyn suhteen. Tästä voi olla jollekin toisellekin joskus hyötyä.
Title: RE: Virhe laskua tulostettaessa
Post by: Morfiini on 19.02.12 - klo:21:01
Kovasti kiitoksia itsellesi hyvästä opastuksesta, ei olisi muuten koskaan tullut mieleen tehdä tuota "config.php":ta uudestaan. Vielä mietin, että olisinkohan voinut käyttää jotenkin epähuomiossa Windowsin Notepadia Wordpadin sijasta...Toivottavasti tästä olisi joskus tosiaan muillekin hyötyä.  
Title: RE: Virhe laskua tulostettaessa
Post by: sudo_root on 02.03.12 - klo:16:46
Hei,

Minulle tuli myös vastaava virhe kun olin päivittänyt joku PHP-moduuli. Ongelma hävisi kun pistin oikeat oikeudet ../cache/ kansioon.

T.su_root