/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste