PHP tartalom már kiküldve hiba egy olyan sorban, amelyikben nincs is output
Sziasztok!
A következö hibaüzenetet kapom:
Namost, a megjelölt sorban mindössze ennyi áll:Hozzátenném, hogy ez a program legvégén fut le egy shutdown-függvényként regisztrált függvényben. Ha közvetlenül írom ki (nem az általam írt buffereléssel) semmi baj nincs vele.
Ha van öteletetek, ne habozzatok, mert kissé tanácstalan vagyok.
Üdv
ProClub
■ A következö hibaüzenetet kapom:
Warning: Cannot modify header information - headers already sent in g:\projects\szdsz\web\modules\core\iohandler.php on line 359
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 395
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 396
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 397
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 395
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 396
Warning: Cannot modify header information - headers already sent by (output started at g:\projects\szdsz\web\modules\core\iohandler.php:359) in g:\projects\szdsz\web\modules\core\iohandler.php on line 397
Namost, a megjelölt sorban mindössze ennyi áll:
header("HTTP/1.1 " . $this->_status . " " . $this->_statuscodes[$this->_status]);
Ha van öteletetek, ne habozzatok, mert kissé tanácstalan vagyok.
Üdv
ProClub
már küldtél ki headert
üdv.: Zsolt
Erre már gondoltam
Gondoltam, abból, hogy class-okban programozom, lejön, hogy azért RTFM és RTFW megvolt mielőtt kérdezek. :) A programban egy árva echo vagy kiírás sincs, mert ott még nem tartok. A fájlok elején, végén sincs fölös space v. ilyesmi.
A probléma sajnos ennél bonyolultabb. :)
ProClub
ob_start?
Nem. :(
output started at
Mondom, hogy nem ilyen egyszerű
Köszönöm, de a probléma nem ilyen egyszerű. Mint a hibaüzenet jelzi az iohandler.php fájban a 359. sorban kezdőtött a kiírás. Viszont ebben egy árva header hívás van, ami, ha jól tudom, nem okoz ilyet.
Ha nem a teljes program futása után fut le (shutdown függvényként) a flush nevü függvény, amelyben a fent említett sor van, akkor semmi gond nincs az egésszel. Ha viszont shutdown-fv-ként fut le, előlép a hiba. Minden fájlt 6x leelenőriztem, sehol egy árva fölös szóköz, sortörés, BOM karakter, echo, print, print_r vagy hasonlóak.
Még egy HTTP fejléc-nézegetővel is megnéztem, mit ír ki!
ProClub
ja, flush()?
Megjelölt sor???
ohhh... anyám... ez igen... remélem nem esett rád a plafon, miközben e remek mondatot megfogalmaztad.
Meg nem tudnám mondani miért, de egy ilyen mondat után, az is eszembe jutna, hogy figyelmetlenségből a 359. és a 395. sort kevered. Az utóbbiban valóban headert adsz ki, de az elősben??? Az jó, hogy odaírod, hogy megjelölt sor, de itt négy megjelölt sor van, vagyis lenne... nem csak egy...
A pontosság kedvéért
Nem az én hibám, PHP bug
Mielött mindenki elkezd engem elküldeni a valahová, nem az én hibám a dolog, hanem egy PHP bug. (És nem, nem kevertem össze a 359. és a 395. sort. Mondom, hogy 6x átnéztem, mielött beküldtem volna.) Legalábbis nekem úgy tünik. Kisérleti PHP file:
Szóval nem én voltam a hülye. Mindez a 4.4.0-s PHPra igaz. 5-össel nem próbáltam.
A második kisérletben még tovább redukáltam a kisérleti kódot - meghagytam a függvényt class nélkül és a register_shutdown_function hívást szimplán a függvényre. Miután ugyanez a hiba lépett fel, feltételezem, hogy a shutdown függvényekben a PHP valamilyen hibája következtében a header hívások ilyet produkálnak.
Üdv
ProClub
Mea culpa. :))))
a hiba reprodulásához osztály sem szükséges...
headers_sent true
http://bugs.php.net/bug.php?id=34181
Lehet szavazni. :)
ProClub
PHP bug report
for BC reasons.
Tehát csak az 5.1-esben javították ki. :)
ProClub