[php] nieuwere versie; ineens headerproblemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Ik heb eerst geprogrammeerd op mijn werkstation met
PHP Version 4.3.1.
Daarin gebruik ik files die de header aanpassen, bijvoorbeeld
setcookie();

dat deed ik eerst (relaxed) door een filetje:
code:
1
2
3
4
5
6
7
<?
//commentaar
?>

<?
setcookie(.....);
?>

Alles ging helemaal goed.
Maar nu heb ik deze pagina naar mijn server verplaatst,
en nou krijg ik de error:
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/httpdocs/cookie.php:4)
Dit gebeurt met php versie 4.3.6

Wat blijkt nu, in die nieuwere versie is hij die lege regel tussen ?> en <? als output gaan zien :(
Aangezien ik dit in ongeveer al mijn websites heb gebruikt is de dringende vraag;
hoe krijg ik die optie terug!!!

PS.
"vroeger" als je een php-pagina had die geen output gaf, maakte php daar zelf een standaard <html>.....</html> van, maar nu doet hij dat ook niet meer maar stuurt letterlijk een lege pagina.

Acties:
  • 0 Henk 'm!

Verwijderd

ff bovenaan ob_start(); pleuren... in ieder geval output buffering aanzetten (je kan dan ook ff kijken naar auto_prepend_file als het niet in ini kan)

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
hmm, dat zou kunnen.
Maar ik snap het nog steeds niet;
in 4.3.1 werd een lege regel niet als output gezien en nu ineens wel :S
Het zou ook aan een verschil in configuratie van php kunnen liggen,
maar wat zou het dan kunnen zijn? (in de php.ini oid)

Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 20:52
Als een lege regel in eerdere versies niet als output werd gezien, was dat een bug. Die bug is dan waarschijnlijk gefixed in de versie die je nu gebruikt. Op zich ranzig dat jouw code hiervan afhankelijk is. Zo niet, haal die regels dan snel weg: met een mooie reguliere expressie in een moderne texteditor is het kinderspel om dit voor grote aantallen bestanden in 1x te doen.

Acties:
  • 0 Henk 'm!

  • Jewie
  • Registratie: Mei 2003
  • Laatst online: 12-09 16:59
Hoe dat dan precies?

Acties:
  • 0 Henk 'm!

  • Jewie
  • Registratie: Mei 2003
  • Laatst online: 12-09 16:59
mjax schreef op 29 juni 2004 @ 22:14:
Zo niet, haal die regels dan snel weg: met een mooie reguliere expressie in een moderne texteditor is het kinderspel om dit voor grote aantallen bestanden in 1x te doen.
Oeps, vergeten bij de vorige post. Kun je dit nader uitleggen?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Zoeken naar :
?>

<?
en dat vervangen door helemaal compleet niks

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
met Ultraedit:

Alle bestanden openen,
Replace, en daan aanvinken all files,
en dan wat Gomez12 zegt.

Waarom staat je code überhaupt in twee blokken?

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
Skaah schreef op 29 juni 2004 @ 23:10:
met Ultraedit:

Alle bestanden openen,
Replace, en daan aanvinken all files,
en dan wat Gomez12 zegt.

Waarom staat je code überhaupt in twee blokken?
uh.. gewoon? :)
maargoed, op mijn computer nooit problemen mee gehad...
alleen een enter (\n) op een regel zonder iets daarvoor werd gewoon nooit als ouput behandeld.

Acties:
  • 0 Henk 'm!

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Gewoon in je php.ini output_buffering op 'On' of 8192 ofzo zetten zal je probleem al oplossen :)

Acties:
  • 0 Henk 'm!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 17-09 16:56
ff checke of dat het verschil is tussen mijn versies; dan weten we dat meteen :P

---
dé edit :9

DANKUH! _/-\o_
Dat is het inderdaad.
In mijn serverversie staat de outputbuffering op 'no value',
en op mijn werkbak op 4096 :)
Nou weet ik in ieder geval wat ik moet veranderen...

[ Voor 57% gewijzigd door Zynth op 29-06-2004 23:50 ]


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Volgens mij wordt het een en ander ook wel trager van die output buffering, je moet namelijk nu eerst wachten voordat het script is afgelopen voordat er output wordt gestuurd, en zonder ob aan gaat het gewoon tegelijkertijd :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Zynth schreef op 29 juni 2004 @ 21:36:
Wat blijkt nu, in die nieuwere versie is hij die lege regel tussen ?> en <? als output gaan zien :(
Aangezien ik dit in ongeveer al mijn websites heb gebruikt is de dringende vraag;
hoe krijg ik die optie terug!!!
Dat was in vorige versies van php ook al zo, dus blijkbaar heb je met een van die handige-onhandige opties (zoals register_globals ook al is) de boel werkend gehad, maar uiteindelijk eigenlijk fout zitten werken. Imho is het netter de foute code aan te passen, dan het gedrag van php. Maar als je het gedrag van php wilt aanpassen moet je de optie van elevator hebben.
PS.
"vroeger" als je een php-pagina had die geen output gaf, maakte php daar zelf een standaard <html>.....</html> van, maar nu doet hij dat ook niet meer maar stuurt letterlijk een lege pagina.

Ik dacht altijd dat dat mijn browser was, volgens mij heeft php dat soort grappen nooit gedaan...
Pagina: 1