Avatar billede Tokez Nybegynder
26. februar 2012 - 17:29 Der er 9 kommentarer og
1 løsning

PHP Include bug?

Hej Eksperten,

Jeg har været i gang med at lave en hjemmeside, og er stødt ind i et problem med include, require osv.

Det ligger sådan at jeg selv har sat den nyeste Apache server og PHP op, min kammerat har brugt den nyeste xampp, vi oplever begge denne fejl.

index.php:
<?php
    require("include.php");
?>

include.php:
<html>
<head>
<style>
* {
    margin:0;
    padding:0;
}
</style>
</head>
<body>
<div style="background-color:#003; width:100px; height:100px;"></div>
</body>
</html>

index.php og include.php burde være ens, men det er de ikke. Der sker det at denne box som vi laver burde være i toppen, og hvis man kører den igennem include.php er den det også. Men hvis man kører index.php kommer der et mellemrum...

Og når man ser på kildekoderne er de også ens. Mens hvis man ser med firebug kan man se at det som burde stå i <head> står i <body> på index.php.

Jeg er ved at blive sindssyg over det, og min kammerat som bruger en anden browser og en færdig pakke af apache og php oplever præcis det samme.

Nogen som ved hvad problemet kan skyldes? Vi tror det er en bug der er kommet i en af de nye versioner af apache eller PHP, men ved det egentlig ikke.

ps. hvis jeg kører det på en af mine webhoteller oplever jeg ikke fejlen, men det har nok noget at gøre med at de bruger en ældre version af PHP eller Apache?
Avatar billede olebole Juniormester
26. februar 2012 - 18:26 #1
<ole>

"Mens hvis man ser med firebug kan man se at det som burde stå i <head> står i <body> på index.php." >> Det lyder helt usandsynligt, at det skulle kunne have noget at gøre med Apache/PHP at gøre. Dokumentet inkluderes, som det er.

Det er svært at vide, hvor fejlen kan ligge, når man ikke selv kan sidde og teste det - men du bør under alle omstændigheder gøre include.php validt. Ellers kan du ikke regne med noget.

/mvh
</bole>
Avatar billede Tokez Nybegynder
27. februar 2012 - 07:16 #2
Ja, det er vildt underligt! Jeg har aldrig oplevet det før, og eksemplet har jeg gjort så simpelt som muligt, include.php er valid i mit eget forsøg, dette er bare et kort eksempel som også gør samme fejl.

Jeg er overbevist om at fejlen ligger enten på PHP eller Apaches side, men kan jo ikke med sikkerhed sige hvilken af dem der er fejl i. Dog tror jeg mest det er ved Apache, da man kunne forstille sig at den tilføjer de nødvendige tags til en php eller html fil hvis denne er tom, (som det jo godt kan se ud, ud fra Apaches synspunkt).
Avatar billede olebole Juniormester
27. februar 2012 - 14:52 #3
Jer er en del mere end 99,99% sikker på, at det ikke kan stamme fra Apache/PHP. Hverken Apache eller PHP har noget somhelst kendskab til HTML. Derfor er det komplet utænkeligt, at nogen af dem skulle ændre ved tags - og Apache har slet ikke noget synspunkt desangående. For Apache/PHP er der bare tale om mere eller mindre tilfældige tekstdokumenter. Jeg er helt sikker på, der er tale om en 'fejl 40'  =)

Indeholder din index.php andet end det, du viser? Hvis du bruger utf-8, husker du så at gemme som utf-8 uden BOM?
Avatar billede Tokez Nybegynder
27. februar 2012 - 15:44 #4
ARGH!!

Jeg kørte med UTF-8 + BOM.... Det var det som var fejlen. Havde glemt at slå det fra i programmet efter formateringen af PC...

Du får ret :-). Fejl 40.

Takker for hjælp og respons. Hvis du smider et svar giver jeg dig point.
Avatar billede olebole Juniormester
27. februar 2012 - 16:14 #5
"Du får ret" >> Ellers tak, jeg har allerede  *o)

Selvtak, men jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede olebole Juniormester
27. februar 2012 - 16:16 #6
Jeg forstår nu ikke rigtig, hvad du skrev i spørgsmålet omkring: "Og når man ser på kildekoderne er de også ens. Mens hvis man ser med firebug kan man se at det som burde stå i <head> står i <body> på index.php.".

Det burde BOM-tegn jo ikke have indvirkning på(?)
Avatar billede Tokez Nybegynder
27. februar 2012 - 17:12 #7
Nej det forstår jeg heller ikke... Men det virker når jeg slår BOM fra på php filerne. Endnu engang tak.
Avatar billede NielsErikP Mester
27. februar 2012 - 21:39 #8
Hej...
Men den Css kan da umuligt virke, før du retter :


<style>
  margin:0;
  padding:0;
</style>



Til :


<style type="text/css">
  margin:0;
  padding: 0;
</style>

Avatar billede Tokez Nybegynder
28. februar 2012 - 09:45 #9
NielsErikP, det har ingen betydning i mit eksempel, alle de store browsers kan sagtens kører det med eller uden type="text/css".

Der var ikke noget galt i HTML'en eller PHP'en. Det som jeg mente var galt var i PHP versionen eller Apache versionen, men fejlen var at jeg brugte UTF-8 med BOM, jeg have brugt UTF-8 uden BOM.
Avatar billede olebole Juniormester
28. februar 2012 - 14:42 #10
- men at browserne kan, bør på den anden side aldrig være et argument for at skrive invalid kode  *o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Københavns Professionshøjskole

Cloudarkitekt

Cognizant Technology Solutions Denmark ApS

Kinaxis Solution Architect

Pharma Nord

PHP backend-udvikler