Avatar billede fajens Mester
01. august 2007 - 08:42 Der er 16 kommentarer og
1 løsning

unexpected $end fejl i PHP5

Hej

Jeg har installeret PHP 5.2.3 på min XP maskine med Apache2 som server.
Når jeg kører et script får jeg følgende fejl:

Parse error: syntax error, unexpected $end in X:/sti

og siden kan ikke ses


Nøjagtig den samme side kører på en ONE.com server uden at give fejl og siden vises som den skal. ONE.com er sat til at køre PHP 5.2.3

Hvorfor får jeg fejlen på min maskine?



/fajens
Avatar billede Slettet bruger
01. august 2007 - 10:20 #1
Der må stå noget mere end den fejl du skriver.
Der skulle meget gerne stå noget med 'line 58' og filnavn.

Men prøv at tjekke om du har husket ; efter alle ting hvor dette er påkrævet, eller at du har husket at lukke en {} i bunden.
Prøv indsæt 1 x } i bunden, og se om det skulle hjælpe.
Avatar billede fajens Mester
01. august 2007 - 10:59 #2
coldgate/
jo der står selvføgelig mere i linien, filnavn og linienummer, som altid er det sidste linienummer.
Der mangler ikke } eller ;

Men jeg har måske ikke forklaret mig godt nok.
Siderne har kørt uden fejl under PHP4, men da jeg opgraderede til PHP5 begyndte fejlen, det er ikke kun denne ene side men så godt som alle sider jeg kører på min egen maskine. Og de samme sider kører uden fejl på ONE.com serveren

er der noget der er uklart så spørg endelig.

/fajens
Avatar billede dkfire Nybegynder
01. august 2007 - 16:19 #3
Kunne det skyldes at du bruger <? ?> og ikke <?php ?> ??
Avatar billede mcardle Nybegynder
01. august 2007 - 16:57 #4
Som standart vil den godtage både <? ?> og <?php ?>. Hvad er der i variablen $end? Må vi se noget kode, det er lidt svært at gætte hvad der kan være galt.

//mcardle
Avatar billede mcardle Nybegynder
01. august 2007 - 16:58 #5
Der er nogle ting der ikke virker med et windows platform, det kunne være det.

//mcardle
Avatar billede fajens Mester
01. august 2007 - 22:04 #6
Koden herunder gviver følgende fejl på min maskine,
Parse error: syntax error, unexpected $end in H:\wwwroot\folder\top_menu.php on line 29
og viser ikke andet på siden. Samme stykke kode bliver vist på nettet uden fejl.

Hvad er problemet min maskine contra nettet

<?php
session_start();
// header("refresh: 5");

?>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="2" >
    <TR align ="left" >
        <!-- TD width ="124" align ="center">
        </TD-->
        <TD rowspan="2" align ="center">
                    <!-- IMG SRC="image/sydvestlogo_gul.gif" BORDER="0" WIDTH="830" HEIGHT="80" ALT="" -->
                    <IMG SRC="image/top_menu.gif" BORDER="0" WIDTH="1030" HEIGHT="80" ALT="" >
        </TD>
    </TR>
    <!-- TR>
        <TD width ="124" valign ="center" align = "center" >
            <?php
                    if (!isset($_SESSION['use_ret'])) {?>
                    <INPUT  type= button  VALUE = "Log Ind" onClick='java script:parent.hoved.location.href="logon/logind.php "'>
            <?php;}
                else
                    {echo "<FONT SIZE='1'>".$_SESSION['navn']."<BR>Besøg nr.: ".$_SESSION['besog']."</FONT><P>"; ?>
                    <INPUT type= button  VALUE = "Log ud " onClick='java script:parent.hoved.location.href="logon/logud.php "'
            <?php;  }
            ?>
        </TD>
    </TR -->
</TABLE>

/fajens
Avatar billede mcardle Nybegynder
01. august 2007 - 22:34 #7
Der var en del fejl. Du må ikke kommenterer tags ud inde i tags'ne.:

eks.
<!-- tr> <-- Dette må man ikke.

<!-- <tr> <-- Sådan skal det gøres.

Der var også 2 steder hvor der manglede et mellemrum, men denne her kode skulle virke.:

<?php
session_start();
// header("refresh: 5");

?>
<table width="100%" border="0" cellspacing="2" >
    <tr align="left" >
        <td width ="124" align ="center"></td>
      <td rowspan="2" align="center">
        <img src="image/sydvestlogo_gul.gif" border="0" width="830" height="80" alt="" />
      <img src="image/top_menu.gif" border="0" width="1030" height="80" alt="" />
        </td>
    </tr>
    <tr>
        <td width="124" valign="center" align="center">
            <?php
                if(!isset($_SESSION['use_ret'])){
            ?>
                    <input type="button" value="Log Ind" onClick='java script:parent.hoved.location.href="logon/logind.php"' />
            <?php
                ;}
                else{
                    echo "<font size='1'>" . $_SESSION['navn'] . "<br /> Besøg nr.: " . $_SESSION['besog'] . "</font><p>";
            ?>
                    <input type="button" value="Log ud" onClick='java script:parent.hoved.location.href="logon/logud.php"' />
      <?php
                ;}
            ?>
        </td>
    </tr>
</table>
Avatar billede mcardle Nybegynder
01. august 2007 - 22:36 #8
Undgå så vidt muligt at bruge <font>, da det er et meget gammelt tag og man bruger det ikke mere. Hvis du gerne vil ændre i størrelse eller andet, så brug <span> og så med en style på.:

eks.:
<span style='font-size:14px;'>Denne tekst er 14 pixels</span>

//mcardle
Avatar billede morhan Novice
01. august 2007 - 22:42 #9
din kode ser sådan ud to steder:

<?php
  if(...){
  ;} // semikolon; du forsøger at afslutte en sætning du ikke er begyndt på
?>

<?php
  if(...){
  ?>noget tekst udenfor php<?php
?>

"noget tekst" skal ikke afsluttes med semikolon
Avatar billede mcardle Nybegynder
01. august 2007 - 22:45 #10
Ups, den havde jeg også lige overset. ;o)

<?php
session_start();
// header("refresh: 5");

?>
<table width="100%" border="0" cellspacing="2" >
    <tr align="left" >
        <td width ="124" align ="center"></td>
      <td rowspan="2" align="center">
        <img src="image/sydvestlogo_gul.gif" border="0" width="830" height="80" alt="" />
      <img src="image/top_menu.gif" border="0" width="1030" height="80" alt="" />
        </td>
    </tr>
    <tr>
        <td width="124" valign="center" align="center">
            <?php
                if(!isset($_SESSION['use_ret'])){
            ?>
                    <input type="button" value="Log Ind" onClick='java script:parent.hoved.location.href="logon/logind.php"' />
            <?php
                }
                else{
                    echo "<font size='1'>" . $_SESSION['navn'] . "<br /> Besøg nr.: " . $_SESSION['besog'] . "</font><p>";
            ?>
                    <input type="button" value="Log ud" onClick='java script:parent.hoved.location.href="logon/logud.php"' />
      <?php
                }
            ?>
        </td>
    </tr>
</table>
Avatar billede morhan Novice
01. august 2007 - 22:55 #11
for at komme den egentlige grund til livs.

<?php;
er ikke en gyldig måde at starte tagget. Der skal være luft efter: <?php ;

at det virker på én server, og ikke en anden, skyldes short_open_tag.
Hvis den en on, åbner du ved at skrive <?

hvis du har fejludskrift på, vil du fange den med det samme. <?php; giver følgende notice:

Notice: Use of undefined constant php - assumed 'php'

med andre ord, hvis short_open_tag er off, vil din kode overse dine afsluttende tuborgklammer
Avatar billede fajens Mester
01. august 2007 - 23:01 #12
Tak for lidt kyndig hjælp.

Jeg tager jeres kommentarer til efterretning, den med mellemrummene havde jeg anelyseret mig frem til, og når det var sat ind kunne koden køre.

Men der er ingen kommentarer til hvorfor koden kan køre på tidligere versioner på min maskine men ikke lokalt på PHP5, og den viste kode kører også på nettet.

/fajens
Avatar billede mcardle Nybegynder
01. august 2007 - 23:05 #13
På one.com kan man vælge om man vil køre PHP4 eller PHP5, den var vel sat til PHP4. Jeg tror det er fordi, at PHP4 ikke var så striks og der så er kommet lidt mere "nu gør vi det ordenligt" i PHP5, ligesom man ser med xhtml.

//mcardle
Avatar billede morhan Novice
01. august 2007 - 23:13 #14
koden virker ved "short_open_tag = on"
koden virker IKKE ved "short_open_tag = off"

hvis php er sat til at vise fejl, vil koden (ved short_open_tag=off) yderligere give den der grimme notice. Den gælder både PHP4 og 5
Avatar billede morhan Novice
01. august 2007 - 23:14 #15
en lille fejl. Noticen vil komme hvis short_open_tag=on
Avatar billede fajens Mester
02. august 2007 - 08:29 #16
/mcardle / morhan

tak for den gode udredning

Jeg forstår nu hvorfor der er fejl på mine sider.

Da i begge har været til stor hjælp kan i begge lægge et svar

Tak for hjælpen

/fajens
Avatar billede mcardle Nybegynder
02. august 2007 - 11:12 #17
Velbekomme.
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