[php] probleem sinds gebruik Mac

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, vroeger programmeerde ik php altijd op m'n windows pc, maar sinds ik een Mac heb loop ik tegen problemen aan. Zo heb ik een leeg bestand met de volgende 3 regels gevuld:

code:
1
2
3
<?php
header('Content-Type: text/html; charset=utf-8');
?>


Het gevolg is een "Cannot modify header information" error. Terwijl er niks naar de output wordt geschreven vóór de header()!

Dan een tweede voorbeeld; bij het uitvoeren van het volgende php-bestand:

code:
1
2
3
<?php
phpinfo();
?>


Krijg ik de volgende error:

code:
1
Fatal error: Call to undefined function: php?phpinfo() in /Library/WebServer/Documents/test.php on line 1

Maar tussen php en phpinfo() staat een vierkant. Nu ik de error plak wordt het een nieuwe regel dus dat "pakt" Apache zeker niet. Terwijl ik gewoon Unicode en UTF-8 gebruik, en alles in Unix-stijl. Het is dus allemaal sinds ik een Mac gebruik dus het zal wel aan een of andere instelling liggen. Maar welke, geen idee! :'(

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Welke editor gebruik je?

Het lijkt op een newlines-instelling ergens.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • snoopy
  • Registratie: December 2000
  • Laatst online: 17-08 08:27
Inderdaad, dit lijkt heel erg op een probleem met regeleindes, unix gebruikt standaard \n, windows \r\n en macintosh \r, dus dit zou wel eens het probleem kunnen zijn...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BBEdit is m'n editor, en in de preferences heb ik de volgende instellingen aanstaan:
Text Files: Opening: Translate Line Breaks: aan
Text Files: Saving: Default Line Breaks: Unix
Text Files: Saving: Use Unicode Line Breaks: aan
Unix Scripting: Warn About Non-Unix Line Breaks Before Scripting: aan

Lijkt mij dat het allemaal klopt?

[ Voor 3% gewijzigd door Verwijderd op 30-05-2005 21:42 ]


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Zet die unicode linebreaks eens uit, en de translation ook?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
chem schreef op maandag 30 mei 2005 @ 21:44:
Zet die unicode linebreaks eens uit, en de translation ook?
Bedankt! Probleem #2 is nu opgelost. :)

Voor probleem #1 heb ik nu een nieuw bestand aangemaakt, index.phps en in de browser zie ik het volgende:

PHP:
1
2
3
<?php
header('Content-Type: text/html; charset=utf-8');
?>

Er wordt dus wel degelijk output geschreven vóór de header()! De vraag is nu, hoe krijg ik dat uit? :+

[ Voor 4% gewijzigd door Verwijderd op 30-05-2005 21:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

dat is het Byte Order Mark (BOM) http://en.wikipedia.org/wiki/Byte_Order_Mark. Dat krijg je er uit door je bestand zonder de BOM op te slaan wat niet in iedere editor mogelijk is en eigenlijk je bestand niet 100% UTF compatible maakt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 30 mei 2005 @ 21:56:
dat is het Byte Order Mark (BOM) http://en.wikipedia.org/wiki/Byte_Order_Mark. Dat krijg je er uit door je bestand zonder de BOM op te slaan wat niet in iedere editor mogelijk is en eigenlijk je bestand niet 100% UTF compatible maakt.
In BBEdit is het wel mogelijk, het werkt nu ook perfect. Mijn dank is groot >:)
Waarom is het niet 100% UTF compatible zo?

Acties:
  • 0 Henk 'm!

Verwijderd

Omdat dit de Endianness van het bestand aangeeft. Zonder de BOM kan het bestand op twee manieren gelezen worden big endian en little endian http://en.wikipedia.org/wiki/Endianness
Pagina: 1