/ 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
file_exists() og safe mode
Fra : Jonas Voss


Dato : 07-06-03 00:00

Jeg har siddet og skrevet et script som gør brug af file_exists() for
at se om en mappe eksisterer, og på baggrund af dette gøre dit eller
dat.

Nu erfarer jeg så, at den server det skal ligge på ikke tillader
file_exists() pga. safe mode.

Findes der er en måde der er lovlig under safe mode, der udfører det
samme, altså tjekker om en mappe eksisterer?

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

"If there's anything more important than my ego,
I want it caught and shot now."

 
 
Peter Brodersen (07-06-2003)
Kommentar
Fra : Peter Brodersen


Dato : 07-06-03 02:10

On Sat, 7 Jun 2003 01:00:16 +0200, Jonas Voss <voss@null.dk> wrote:

>Nu erfarer jeg så, at den server det skal ligge på ikke tillader
>file_exists() pga. safe mode.

Det burde nu ikke være et problem - det burde kun give fejl, hvis du
fx forsøger at køre file_exists() på filer udenfor dit hjemkatalog.

Hvilken kode kører du, der giver fejl, og hvilken fejl får du?

Bemærk, at den sti, man evt. måtte angive, skal angives i forhold til
filsystemet. Dvs. file_exists("/billeder/splash.jpg") vil være en
forkert brug af file_exists().

--
- Peter Brodersen

Jonas Voss (07-06-2003)
Kommentar
Fra : Jonas Voss


Dato : 07-06-03 13:22

Peter Brodersen <usenet@ter.dk> wrote:

> On Sat, 7 Jun 2003 01:00:16 +0200, Jonas Voss <voss@null.dk> wrote:
>
>>Nu erfarer jeg så, at den server det skal ligge på ikke tillader
>>file_exists() pga. safe mode.
>
> Det burde nu ikke være et problem - det burde kun give fejl, hvis du
> fx forsøger at køre file_exists() på filer udenfor dit hjemkatalog.

Ok, jeg anvender file_exists() på filer i hjemmekataloget.

> Hvilken kode kører du, der giver fejl, og hvilken fejl får du?

Jeg får denne fejl:

Warning: file_exists() [function.file-exists]: SAFE MODE Restriction
in effect. The script whose uid is 3111 is not allowed to access
/WWW/test/thumbs owned by uid 666 in /WWW/test/index.php on line 397

Det der udløser det er denne linie:

$thumb_image = $thumb_conf['dir']."/".$image;
$error = file_exists($thumb_image);

Scriptet laver selv mappen thumbs, som altså så ikke kan tilgåes,
fordi jeg ejer scriptet, og ikke har oprettet thumbs-mappen. Det giver
meget god mening jo.

> Bemærk, at den sti, man evt. måtte angive, skal angives i forhold til
> filsystemet. Dvs. file_exists("/billeder/splash.jpg") vil være en
> forkert brug af file_exists().

Og det er nok der det hele går galt, for det er netop det jeg
forsøger. Tak for tippet, så vil jeg prøve med en anden stiangivelse.
(;

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

"Time is an illusion. Lunchtime doubly so."

Jonas Voss (07-06-2003)
Kommentar
Fra : Jonas Voss


Dato : 07-06-03 14:08

Jonas Voss <voss@null.dk> wrote:

> Peter Brodersen <usenet@ter.dk> wrote:
>
>> Bemærk, at den sti, man evt. måtte angive, skal angives i forhold til
>> filsystemet. Dvs. file_exists("/billeder/splash.jpg") vil være en
>> forkert brug af file_exists().
>
> Og det er nok der det hele går galt, for det er netop det jeg
> forsøger. Tak for tippet, så vil jeg prøve med en anden stiangivelse.
> (;

Og det gjorde jeg så, og lige lidt hjalp det. Et længere udklip af min
kode kan ses her:

<http://it.edu/people/jcv/usenet/safe_mode.phps>

$images er et array af filnavne, læst vha. readdir().
$thumb_conf['dir'] er en string sat højere oppe i dokumentet. I dette
tilfælde har den værdien 'thumbs'.

Ovenstående kode giver dog stadig samme fejl:

Warning: file_exists() [function.file-exists]: SAFE MODE Restriction
in effect. The script whose uid is 3111 is not allowed to access
/hotel/moblog/WWW/test/thumbs/IMGP1006.JPG owned by
uid 666 in /hotel/moblog/WWW/test/index.php on line
398

Linie 398 indeholder denne linie:

$error = file_exists($path);

Er der nogen som helst måder at omgå det på? Jeg mener selv jeg nu har
forsøgt med en anden stiangivelse, i forhold til filsystemet, men det
er måske forkert opfattet?

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

Here was something that Ford felt he could speak about with
authority. "Life," he said, "is like a grapefruit."

Jesper Brunholm (07-06-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 07-06-03 21:45

Jonas Voss wrote:

> <http://it.edu/people/jcv/usenet/safe_mode.phps>

Jeg må indrømme at jeg er for doven til at trawle din kode igennem lige
nu, men:

Hvis du står i scripts/billeder/safe_mode.php så skal flg gerne printe
'eksisterer' med både
$fileExistsTest='safe_mode.php';
og
$fileExistsTest='../../scripts/billeder/safe_mode.php';

if(file_exists($fileExistsTest)){
echo 'eksisterer!';
}else{
echo 'kan ikk finde den ';
}

Det virker på mine servere med safe_mode. Jeg håber det kan hjælpe.

mvh

Jesper Brunholm


Jonas Voss (09-06-2003)
Kommentar
Fra : Jonas Voss


Dato : 09-06-03 08:59

On Sat, 07 Jun 2003 22:44:54 +0100, Jesper Brunholm wrote:

> Hvis du står i scripts/billeder/safe_mode.php så skal flg gerne printe
> 'eksisterer' med både
> $fileExistsTest='safe_mode.php';
> og
> $fileExistsTest='../../scripts/billeder/safe_mode.php';

Det virker også fint nok så længe det er mig der har lavet filen, så
matcher uid nemlig, men scriptet tjekker om en mappe, indeholdende
billeder som PHP genererer vha. GDLib, eksisterer. PHP har altså selv
lavet både mappe, og de billeder der ligger inde i mappen (hvilket jeg
vist ikke oplyste om tidligere, sorry).

> Det virker på mine servere med safe_mode. Jeg håber det kan hjælpe.

Tak for hjælpen, jeg kan også fint få den til at skrive eksisterer når jeg
tjekker på den måde du foreslår, men det er også filer jeg har lavet. Når
det er filer PHP har lavet er det no go.

Findes der en anderledes måde at foretage samme tjek? Det virker
umiddelbart ikke sådan, da de fleste af filsystem-funktionerne er sat ude
af spil.

Hvis der er nogen der sidder med de vises sten, så tøv endelig ikke.

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

"When I eat a biscuit," said Arthur, "it stays eaten."


Bjarne (09-06-2003)
Kommentar
Fra : Bjarne


Dato : 09-06-03 22:06

On Mon, 09 Jun 2003 09:58:43 +0200
"Jonas Voss" <voss@null.dk> wrote:

> Tak for hjælpen, jeg kan også fint få den til at skrive eksisterer når jeg
> tjekker på den måde du foreslår, men det er også filer jeg har lavet. Når
> det er filer PHP har lavet er det no go.
>
> Findes der en anderledes måde at foretage samme tjek? Det virker
> umiddelbart ikke sådan, da de fleste af filsystem-funktionerne er sat ude
> af spil.
>
> Hvis der er nogen der sidder med de vises sten, så tøv endelig ikke.


Jeg havde det samme problem på mit webhotel, når PHP oprettede et directory, kunne man ikke tilgå det med fil-funktionerne. Jeg løste det ved i stedet at oprette mine directories med ftp - ftp_mkdir() (kræver at PHP er compilet med ftp-understøttelse). Det er nok ikke den mest elegante løsning, men det virkede for mig.

- Bjarne

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste