|
| HTTP_SERVER_VARS Fra : Bjerrum |
Dato : 04-08-03 15:43 |
|
Hej
Jeg har lavet noget på min egen maskine, hvor jeg har en apache på win. Når
jeg oploader det til mit win webhotel køre det ikke.
Fejlen:
PHP Notice: Undefined index: DOCUMENT_ROOT in d:\doman.dk\www\mappe\test.php
on line 2
Hvilket er denne linie.
$DOCUMENT_ROOT = $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
Jeg bruge ovenstående til at skrive i en fil
$fp = fopen("$DOCUMENT_ROOT/../update_txt/nyhed.txt", 'w');
Er der nogen som kan lede mig på sporet til en løsning?
Søren Bjerrum
| |
Christian Knudsen (04-08-2003)
| Kommentar Fra : Christian Knudsen |
Dato : 04-08-03 15:57 |
|
"Bjerrum" <sb@mijau.dk> skrev i en meddelelse
news:fiuXa.45209$Kb2.1932007@news010.worldonline.dk...
> Hej
>
> Jeg har lavet noget på min egen maskine, hvor jeg har en apache på win.
Når
> jeg oploader det til mit win webhotel køre det ikke.
>
> Fejlen:
>
> PHP Notice: Undefined index: DOCUMENT_ROOT in
d:\doman.dk\www\mappe\test.php
> on line 2
>
> Hvilket er denne linie.
>
> $DOCUMENT_ROOT = $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
>
> Jeg bruge ovenstående til at skrive i en fil
>
> $fp = fopen("$DOCUMENT_ROOT/../update_txt/nyhed.txt", 'w');
>
> Er der nogen som kan lede mig på sporet til en løsning?
>
> Søren Bjerrum
>
>
$_SERVER["DOCUMENT_ROOT"] burde virke.
| |
Jacob Atzen (04-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 04-08-03 16:04 |
|
"Bjerrum" <sb@mijau.dk> writes:
> PHP Notice: Undefined index: DOCUMENT_ROOT in d:\doman.dk\www\mappe\test.php
> on line 2
DOCUMENT_ROOT eksisterer ikke i det array du tilgår.
> $DOCUMENT_ROOT = $HTTP_SERVER_VARS['DOCUMENT_ROOT'];
Brug $_SERVER, jvf:
< http://dk.php.net/manual/en/language.variables.predefined.php>
Tror dog ikke det hjælper.
Iflg:
< http://dk.php.net/manual/en/reserved.variables.php>
sættes $_SERVER["DOCUMENT_ROOT"] i serverkonfigurationen. Så det kan
være, at det er her fejlen er.
Prøv evt. at udskrive hele $_SERVER arrayet:
var_dump($_SERVER) og se om det giver nogen ideer.
--
Med venlig hilsen
- Jacob Atzen
| |
Bjerrum (04-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 04-08-03 16:59 |
|
Hej Jacob
Nej den virker ikke, men efter et kig med var_dump($_SERVER)
bliver det følgende:
$doc_root = $_SERVER['HTTP_HOST'];
Er nedenstående korrekt hvis min mappe ligger på niveau med www mappen?
For det virker nemlig ikke og det kunne jo så være manglene adgang.
$fp = fopen("$doc_root/../update_txt/nyhed.txt", 'r');
Søren
| |
Peter Sepstrup (04-08-2003)
| Kommentar Fra : Peter Sepstrup |
Dato : 04-08-03 19:15 |
|
Bjerrum skrev:
> Hej Jacob
>
> Nej den virker ikke, men efter et kig med var_dump($_SERVER)
> bliver det følgende:
> $doc_root = $_SERVER['HTTP_HOST'];
>
> Er nedenstående korrekt hvis min mappe ligger på niveau med www mappen?
> For det virker nemlig ikke og det kunne jo så være manglene adgang.
>
> $fp = fopen("$doc_root/../update_txt/nyhed.txt", 'r');
Har du retigheder til at læse uden for webscope (som jeg forventer er www) ?
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Bjerrum (04-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 04-08-03 17:20 |
|
> Har du retigheder til at læse uden for webscope (som jeg forventer er www)
?
> --
> Mvh. Peter.
Ja det er jo så det jeg ikke rigtig ved, men er det rigtigt med
/../
for at komme et niveau op?
$fp = fopen("$doc_root/../mappe/nyhed.txt", 'r');
Søren
| |
Peter Sepstrup (04-08-2003)
| Kommentar Fra : Peter Sepstrup |
Dato : 04-08-03 19:24 |
|
Bjerrum skrev:
> Ja det er jo så det jeg ikke rigtig ved, men er det rigtigt med
> /../
> for at komme et niveau op?
ja den skulle være god nok... det er på web-hotellet du prøver nu ik?
Jeg kunne ikke umiddelbart forestille mig at du havde retigheder til det...
hvis det virker lokalt på en win maskine er det nok fordi dit web-hotel køre
unix/linux og her er jeg overbevist om at det i hvert fald ikke lade sig
gøre med en standard opsætning... jeg vil da osse mene at det er en
alvorlig sikkerhedsbrist hvis man kan
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Jacob Atzen (04-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 04-08-03 22:34 |
|
Peter Sepstrup <peter@_REMOVE_sepstrupnet.dk> writes:
> ja den skulle være god nok... det er på web-hotellet du prøver nu
> ik? Jeg kunne ikke umiddelbart forestille mig at du havde
> retigheder til det... hvis det virker lokalt på en win maskine er
> det nok fordi dit web-hotel køre unix/linux og her er jeg overbevist
> om at det i hvert fald ikke lade sig gøre med en standard
> opsætning... jeg vil da osse mene at det er en alvorlig
> sikkerhedsbrist hvis man kan
Hvorfor er det en sikkerhedsbrist, at have adgang til filer uden for
webscope? Umiddelbart er det da ganske fornuftigt, at lægge de filer,
man vil være sikker på ingen andre læser, uden for webscope.
--
Med venlig hilsen
- Jacob Atzen
| |
Peter Sepstrup (05-08-2003)
| Kommentar Fra : Peter Sepstrup |
Dato : 05-08-03 00:43 |
|
Jacob Atzen skrev:
> Hvorfor er det en sikkerhedsbrist, at have adgang til filer uden for
> webscope? Umiddelbart er det da ganske fornuftigt, at lægge de filer,
> man vil være sikker på ingen andre læser, uden for webscope.
Var det ikke på et web-hotel? i såfald synes da ikke det er så smart at folk
kan få adgang til andet en deres web-scope... men det er selvf. bare min
mening.
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Jacob Atzen (04-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 04-08-03 23:10 |
|
Peter Sepstrup <peter@_REMOVE_sepstrupnet.dk> writes:
> Jacob Atzen skrev:
>
> > Hvorfor er det en sikkerhedsbrist, at have adgang til filer uden for
> > webscope? Umiddelbart er det da ganske fornuftigt, at lægge de filer,
> > man vil være sikker på ingen andre læser, uden for webscope.
>
> Var det ikke på et web-hotel? i såfald synes da ikke det er så smart at folk
> kan få adgang til andet en deres web-scope... men det er selvf. bare min
> mening.
Med apache's mod_userdir har brugeren normalt et underkatalog til
deres hjemmekatalog som webroot. Eks: /home/peter/public_html. Det gør
vel ingen skade, at man desuden har adgang til /home/peter?
Vi er ganske enige om, at det ikke er hensigtsmæssigt at give brugerne
adgang til alle dele af filsystemet.
--
Med venlig hilsen
- Jacob Atzen
| |
Peter Sepstrup (05-08-2003)
| Kommentar Fra : Peter Sepstrup |
Dato : 05-08-03 01:10 |
|
Jacob Atzen skrev:
> Med apache's mod_userdir har brugeren normalt et underkatalog til
> deres hjemmekatalog som webroot. Eks: /home/peter/public_html. Det gør
> vel ingen skade, at man desuden har adgang til /home/peter?
den havde jeg ikke lige taget med i betragtningen... så vil jeg godt give
dig ret...
> Vi er ganske enige om, at det ikke er hensigtsmæssigt at give brugerne
> adgang til alle dele af filsystemet.
Ok... så er vi enige
--
Mvh. Peter.
___________________________________
www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Bjerrum (05-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 05-08-03 11:18 |
|
Jeg begyndt på det med at lægge filerne et niveau op, fordi min "php and
mySQL web development" bog, foreslår dette af sikkerheds grunde.
Hvis filerne er på samme niveau som php'en kan ubudende gæster da læse dem.
Selvfølgelig hvis de kan gætte at hvad jeg har kalt dem, men ellers?
For så kan mine php filer vel også ses, eller?
Søren
"Peter Sepstrup" <peter@_REMOVE_sepstrupnet.dk> skrev i en meddelelse
news:3f2eda4e$0$83039$edfadb0f@dtext01.news.tele.dk...
> Jacob Atzen skrev:
>
> > Med apache's mod_userdir har brugeren normalt et underkatalog til
> > deres hjemmekatalog som webroot. Eks: /home/peter/public_html. Det gør
> > vel ingen skade, at man desuden har adgang til /home/peter?
>
> den havde jeg ikke lige taget med i betragtningen... så vil jeg godt give
> dig ret...
>
> > Vi er ganske enige om, at det ikke er hensigtsmæssigt at give brugerne
> > adgang til alle dele af filsystemet.
>
> Ok... så er vi enige
>
> --
> Mvh. Peter.
> ___________________________________
> www.SepstrupNET.dk & www.PHP-FAQ.dk
| |
Jacob Atzen (04-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 04-08-03 22:30 |
|
"Bjerrum" <sb@mijau.dk> writes:
> Ja det er jo så det jeg ikke rigtig ved, men er det rigtigt med
> /../
> for at komme et niveau op?
Det plejer at være måden.
> $fp = fopen("$doc_root/../mappe/nyhed.txt", 'r');
Prøv med:
print "$doc_root/../mappe/nyhed.txt";
Og se om det giver det rigtige. Hvis dette er tilfældet, så er det
muligvis (som Peter så rigtigt skriver) fordi webserveren ikke har
læseadgang til det pågældende.
Det er i øvrigt altid en god ide at skrive, hvorfor man mener scriptet
ikke virker. Altså de fejlbeskeder man får, når man prøver at køre sit
script.
--
Med venlig hilsen
- Jacob Atzen
| |
Bjerrum (05-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 05-08-03 11:14 |
|
Hej igen
Min kode ser nu sådan ud:
<?php
$DOCUMENT_ROOT = $HTTP_SERVER_VARS['PATH_TRANSLATED'];
echo '<p>'.$DOCUMENT_ROOT.'</p>';
$fp = fopen("$DOCUMENT_ROOT/../mappe/nyhed.txt", 'r');
if (!$fp)
{
echo '<p>Kunne ikke læse</p>';
exit;
}
while (!feof($fp))
{
$order= fgets($fp, 999);
echo $order;
}
fclose($fp);
?>
Hvilket giver:
-----
d:\doman.dk\www\mytest\test.php
Kunne ikke læse
PHP Warning: fopen(d:\doman.dk\www\mytest\test.php/../mappe/nyhed.txt):
failed to open stream: No such file or directory in
d:\mijau.dk\www\espressobaren\test.php on line 4
-----
For mig at se har jeg fat i den rigtige sti, men /../ virker ikke. Har
prøvet \..\
Flere gode forslag inden jeg giver op og ligger nyhed.txt på niveau med php
filerne?
Søren
> Det er i øvrigt altid en god ide at skrive, hvorfor man mener scriptet
> ikke virker. Altså de fejlbeskeder man får, når man prøver at køre sit
> script.
>
> --
> Med venlig hilsen
> - Jacob Atzen
| |
Bjerrum (05-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 05-08-03 11:23 |
|
Det er jo FLOT at jeg prøver at være lidt hæmlig og så glemmer halvdelen
outputtet i eksemplet skal hede, hvis det skal give mening:
-----
> d:\doman.dk\www\mytest\test.php
> Kunne ikke læse
>
> PHP Warning: fopen(d:\doman.dk\www\mytest\test.php/../mappe/nyhed.txt):
> failed to open stream: No such file or directory in
> d:\doman.dk\www\mytest\test.php on line 4
> -----
"Bjerrum" <sb@mijau.dk> skrev i en meddelelse
news:GrLXa.45916$Kb2.1957351@news010.worldonline.dk...
> Hej igen
>
> Min kode ser nu sådan ud:
>
> <?php
> $DOCUMENT_ROOT = $HTTP_SERVER_VARS['PATH_TRANSLATED'];
> echo '<p>'.$DOCUMENT_ROOT.'</p>';
> $fp = fopen("$DOCUMENT_ROOT/../mappe/nyhed.txt", 'r');
> if (!$fp)
> {
> echo '<p>Kunne ikke læse</p>';
> exit;
> }
> while (!feof($fp))
> {
> $order= fgets($fp, 999);
> echo $order;
> }
> fclose($fp);
> ?>
>
> Hvilket giver:
> -----
> d:\doman.dk\www\mytest\test.php
> Kunne ikke læse
>
> PHP Warning: fopen(d:\doman.dk\www\mytest\test.php/../mappe/nyhed.txt):
> failed to open stream: No such file or directory in
> d:\mijau.dk\www\espressobaren\test.php on line 4
> -----
> For mig at se har jeg fat i den rigtige sti, men /../ virker ikke. Har
> prøvet \..\
> Flere gode forslag inden jeg giver op og ligger nyhed.txt på niveau med
php
> filerne?
>
> Søren
>
> > Det er i øvrigt altid en god ide at skrive, hvorfor man mener scriptet
> > ikke virker. Altså de fejlbeskeder man får, når man prøver at køre sit
> > script.
> >
> > --
> > Med venlig hilsen
> > - Jacob Atzen
>
>
| |
Jacob Atzen (05-08-2003)
| Kommentar Fra : Jacob Atzen |
Dato : 05-08-03 11:43 |
|
"Bjerrum" <sb@mijau.dk> writes:
> > PHP Warning: fopen(d:\doman.dk\www\mytest\test.php/../mappe/nyhed.txt):
> > failed to open stream: No such file or directory in
> > d:\doman.dk\www\mytest\test.php on line 4
Her er jo et problem - du prøver ikke at skifte fra et bibliotek, men
fra en fil: "d:\doman.dk\www\mytest\test.php". Du skal have fjernet
filnavnet fra denne sti. Noget andet, er, at det muligvis var lettere
for dig, at skrive stien direkte ind i din $DOCUMENT_ROOT variabel:
$DOCUMENT_ROOT = "d:\doman.dk\www\";
Så slipper du for at bekymre dig om "..". Til gengæld kan du ikke
umiddelbart flytte løsningen til et andet hotel uden at ændre i
stien.
Vær desuden opmærksom på dit webhotel tilsyneladende bruger
backslashes i stier, du bør derfor gøre det samme.
Til sidst: Vær rar, at svare under det du svarer på og fjerne de dele
af indlægget, der ikke længere er relevante. Det er meget nemmere at
forstå sammenhængen i tråden på den måde.
--
Med venlig hilsen
- Jacob Atzen
| |
Bjerrum (05-08-2003)
| Kommentar Fra : Bjerrum |
Dato : 05-08-03 12:39 |
|
"Jacob Atzen" <jacob@aub.dk> skrev
> Her er jo et problem - du prøver ikke at skifte fra et bibliotek, men
> fra en fil: "d:\doman.dk\www\mytest\test.php". Du skal have fjernet
> filnavnet fra denne sti. Noget andet, er, at det muligvis var lettere
> for dig, at skrive stien direkte ind i din $DOCUMENT_ROOT variabel:
>
> $DOCUMENT_ROOT = "d:\doman.dk\www\";
>
> Så slipper du for at bekymre dig om "..". Til gengæld kan du ikke
> umiddelbart flytte løsningen til et andet hotel uden at ændre i
> stien.
Okay så virker det.
$DOCUMENT_ROOT = 'd:/doman.dk/mappe/nyhed.txt';
$fp = fopen("$DOCUMENT_ROOT", 'r');
Og jeg kan nok godt overkomme, at skrive en ny sti ind når jeg flytter det.
Om der så er en sikkerheds ting i, at man nu i test.php kan læse stien. Det
kan jeg ikke lige gennemskue, men jeg finder vel ud af det hvis nogen laver
ballade.
Du skal have mange tak for din tid.
Søren
| |
|
|