Avatar billede haolan Nybegynder
17. oktober 2004 - 22:57 Der er 12 kommentarer og
1 løsning

forskel på php??

Hey..
Jeg har et mindre problem med at se mine phpscripts på min egen server.. jeg har samme phpversion som surftown hvor jeg har min hjemmeside liggende.

jeg er igang med at lære php ifølge en bog og skulle indtaste scriptet:

<?php
$life = 42;
function meaningOfLife() {
    echo "the meaning of life is $life<br>";
}
meaningOfLife();
?>

hvorefter browseren skulle udskrive: the meaning of life is
men på min egen server får jeg meddelelsen

Notice: Undefined variable: testvariable in C:\webserver\Apache2\htdocs\introduktion\Funktioner\scopetest.php on line 5
test variable:

men uploader jeg den på webhotellet kan scriptet godt afvikles som forventet.. hvad er der galt med min server?
Avatar billede arne_v Ekspert
17. oktober 2004 - 22:59 #1
Check lige dit script - optræder der en testvariable i den ?
Avatar billede haolan Nybegynder
17. oktober 2004 - 23:04 #2
arh sorry brugte en forkert fejl.. den rigtige er:

Notice: Undefined variable: life in C:\webserver\Apache2\htdocs\introduktion\Funktioner\scopetest2.php on line 5
the meaning of life is
Avatar billede detox Nybegynder
17. oktober 2004 - 23:04 #3
Forskellen er at error_reporting er sat mindre restriktivt på webhotellet, så den ikke viser fejl af typen 'Notice'.
Avatar billede plx Nybegynder
17. oktober 2004 - 23:05 #4
Læs også lide om variable scope http://dk2.php.net/variables.scope
Avatar billede detox Nybegynder
17. oktober 2004 - 23:07 #5
Du kan genskabe den samme tilstand på din egen maskine ved at tilføje:

error_reporting(E_ALL ^ E_NOTICE);

øverst i dit script. Det kan osse sættes i php.ini, men det kan kun anbefales at køre med fuld error_reporting i udviklingsfasen.
Avatar billede plx Nybegynder
17. oktober 2004 - 23:07 #6
To måder at gøre det på:

<?php
$life = 42;
function meaningOfLife() {
    global $life;
    echo "the meaning of life is $life<br>";
}
meaningOfLife();
?>

eller bedre:

<?php
$life = 42;
function meaningOfLife($life) {
    echo "the meaning of life is $life<br>";
}
meaningOfLife($life);
?>
Avatar billede plx Nybegynder
17. oktober 2004 - 23:08 #7
at det virker på nogle servere har nok noget at gøre med php.ini og register globals
Avatar billede detox Nybegynder
17. oktober 2004 - 23:11 #8
plx -> Hvis du læser spørgsmålet igen fremgår det at den skulle udskrive:

'the meaning of life is'

så mon ikke det er et eksempel fra lærebogen, som netop fortæller noget om variable scope?
Avatar billede plx Nybegynder
17. oktober 2004 - 23:12 #9
måske :=)
Avatar billede detox Nybegynder
17. oktober 2004 - 23:14 #10
;O)
Avatar billede Slettet bruger
18. oktober 2004 - 01:09 #11
Hvis der skulle være tvivl, så prøv at se på filnavnet fra fejlmeddelelsen. ;-)

Og man kan jo så sige, at den fejlbesked er bare endnu en mulig konsekvens af at forsøge at bruge variable uden for deres scope. Og den er vel at mærke temmelig meget lettere at få øje på end bare en smule manglende tekst, så lad endelig være med at skrue ned for error_reporting, hvis du bruger din egen server til at udvikle scripts, der skal op på hotellet bagefter.
Avatar billede haolan Nybegynder
19. maj 2005 - 19:50 #12
sorry.. havde helt svedt ud at jeg havde oprettet denne tråd..

PLX og Detox lig svar for points :)

(Må til at tjekke eksperten lidt oftere..)
Avatar billede detox Nybegynder
25. maj 2005 - 12:51 #13
værs'go
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