Just nu i M3-nätverket
Gå till innehåll

Lista innehåll i katalog


Fredrik Stark

Rekommendera Poster

För att lista filer i en katalog så använder jag följande kod:

 

if ($handle = opendir($path."/$new_aId")) {

while (false !== ($file = readdir($handle))) {

}

closedir($handle);

 

dock så har jag upptäckt att jag inte kan lista innehållet i en katalog som jag har skapat med php-kommandot mkdir();

katalogen som skapas med mkdir() får owner www som sig bör, och även om jag sätter chmod till 777 på katalogen så kan jag fortfarande inte lista innehållet i den. Den klagar på SAFE MODE, vilket jag inte förstår.. jag har ju för sjutton satt rättigheterna till 777 på katalogen?

 

Tips? Någon?

Länk till kommentar
Dela på andra webbplatser

Hrrmm, det visste jag inte faktiskt, men det är väl bra förstås ur säkerhets synpunkt.

 

Det jag antar att du har råkat ut för är detta som de skriver om i manualen:

 

When safe_mode is on, PHP checks to see if the owner of the current script matches the owner of the file to be operated on by a file function.

 

Detta borde innebära att om filen som försöker titta i katalogen ägs av dig, och katalogen som är gjord av PHP ägs av www, så får du alltså inte titta i den katalogen...

 

Enligt listan på vilka funktioner som är påverkade av safe_mode finns inte readdir eller opendir, men jag kan tänka mig att det är så ändå. Vad exakt är det för felmeddelande du får?

 

Länk till kommentar
Dela på andra webbplatser

Felmeddelandet jag får är följande:

 

Warning: SAFE MODE Restriction in effect. The script whose uid is 6293 is not allowed to access /home/(...)/public_html/galleri/photos/1/7 owned by uid 1003 in /home/(...)/public_html/galleri/_inc/functions.php on line 40

 

och rad 40 är då:

if ($handle = opendir($path."/$new_aId"))

 

Jag försökte använda chown() för att ändra ägaren till katalogen, det gick inte heller.

 

Länk till kommentar
Dela på andra webbplatser

Då beror problemet på det som jag trodde. Eftersom webservern körs av användaren www och det är den som har skapat den nya katalogen kan inte scriptet som är skapat av din användare titta i den katalogen. Du kan tyvärr inte göra något åt detta eftersom webhotellet du kör på inte tillåter såna grejer.

 

Skicka ett mail till webhotellet och fråga om de kan ändra på sin policy eller byt webhotell, jag tror tyvärr inte att du kan göra så mycket mer åt saken...

 

Eftersom webhotellet kör safe_mode så tror jag inte att de kommer ändra på sin policy, men du kan ju alltid fråga.

 

Länk till kommentar
Dela på andra webbplatser

 

Jag gissar att jag inte får köra system() eller något annat liknande i safe-mode heller?

Annars kan man ju göra en ls, men det verkar inte funka heller... aaargh

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...
Anders Gustafsson2

Hej,

 

Prova om du kan köra chown(), i så fall skulle du kunna ända ägaren till filen till dig själv varje gång du skapar en ny katalog. Ytterst osäker på om detta funkar, men ingen har dött av att prova.

 

Är det otroligt viktigt kan du ju alltid gå förbi det hela genom att använda ftp funktionerna OM webhotellet stödjer ftp anslutningar från php vill säga.

 

/Anders

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...