Avatar billede swaq Nybegynder
29. april 2003 - 10:10 Der er 11 kommentarer og
1 løsning

Filhåndtering, oprette, slette - (billedfiler)

Jeg har en bunke billeder i et bib, derudover har jeg en lille funktionalitet som kan resize et givent billede. Problemet er bare at denne resize-funktion ødelægger billederne, så derfor har jeg prøvet at lave en 'temp.jpg' ved hjælp af copy(...).
Det virker altsammen fint når scriptet køres første gang og temp.jpg ikke eksisterer! Men hvordan fjerner jeg temp.jpg igen? Jeg har prøvet med unlink, men det virker ikke, jeg har givet filerne (også temp.jpg) og bib. ALLE rettigheder ved hjælp af CHMOD(...)

Hvis jeg skriver unlink('temp.jpg') som sidste linie i koden, så vises billedet overhovedet ikke, så min konklusion er at temp.jpg skal slette (hvis den eksisterer) som noget af det første når scriptet køres.

Her er en stump af koden;

$temp = 'temp.jpg';
if(file_exists($temp)){
    unlink($temp);   
}
$file = fopen($temp,"w+") || die ("file won't open");

chmod($temp,0777);

if (!copy($pic, 'temp.jpg')) {
    print ("failed to copy $pic...<br>\n");
}
Avatar billede tsm Nybegynder
29. april 2003 - 10:24 #1
uden et være den store unix-haj er der så ikke en kommando der hedder rm som bruges til at slette filer, prøv at se her: http://www.but.auc.dk/EDB/dokumentation/unix/kommandoer.html#rm
Avatar billede andy Nybegynder
29. april 2003 - 10:40 #2
safe_mode er sikkert enabled. Så kan du ikke unlinke filer med php
Avatar billede swaq Nybegynder
29. april 2003 - 11:15 #3
ok... kan se på phpinfo() af safe_mode er enabled, meeeeen øhhh... hvad gør man så?
Avatar billede andy Nybegynder
29. april 2003 - 11:25 #4
Så vidt jeg ved er der ingen udvej.
Avatar billede swaq Nybegynder
29. april 2003 - 11:31 #5
hvis nu man ikke kan slette filen, kan man så overskrive den med et tomt indhold? På den måde bliver den måske klasr til et nyt billede?
Avatar billede iphase Nybegynder
29. april 2003 - 11:49 #6
HVAD!!! du kan tilhvertifaldet godt unlinke når safemode er sat!
Manden siger jo selv at han har sat chmod 777 sikker eller noget på det dir.
Så kan man godt unlinke.. jeg har selv flere scripts der manipulere billeder og kopiere dem og renamer dem og derefter slettet originalen .
Avatar billede iphase Nybegynder
29. april 2003 - 11:52 #7
jeg kan godt paste min opensourcebabe kode hvis du vil se den som et eksempelt.. den kan ses i funktion på www.easyfrag.dk og der er safemode sat.
Avatar billede swaq Nybegynder
29. april 2003 - 13:41 #8
jamen det ville være helt super, hvis du vil det :-)
Avatar billede hvidlogspusher Nybegynder
29. april 2003 - 17:49 #9
ja man kan sku sagtens unlinke selvom safemod er på... det eneste der skal være en chmod 777
Avatar billede iphase Nybegynder
29. april 2003 - 19:03 #10
ALtså dette script leder efter den ældste fil i et dir og kopiere det over i et andet samtidigt med at den renamer filen og sletter den gamle.
dette bliver gjort engang hverdag.

Det er somsagt til mit dagens babe system som kører på www.easyfrag.dk
Det består selvfølgeligt at meget mere kode men her er det der har med unlinking at gøre.

<?php

  $dir='/usr/home/hotel/easyfrag/WWW/pic/OpenSource_Babes';
  $d = opendir($dir);

  $foundfiletime=0;
  while (($file=readdir($d))!==false) {
    if (eregi('\.jpg$',$file)) {
      $time=filemtime("$dir/$file");
      if ($time>$foundfiletime) {
        $foundfile=$file;
        $foundfiletime=$time;
      }
    }
  }
  closedir($d);
  $val = $foundfile;

$fileday = date(mdY, $foundfiletime);
$today = date(mdY);

if($today != $fileday){

  $dir2='/usr/home/hotel/easyfrag/WWW/botd/new';
  $d2 = opendir($dir2);

  $foundfiletime=999999999999999;
  while (($file=readdir($d2))!==false) {
    if (eregi('\.jpg$',$file)) {
      $time=filemtime("$dir2/$file");
      if ($time<$foundfiletime) {
        $foundfile2=$file;
        $foundfiletime=$time;
      }
    }
  }
  closedir($d2);
  $val2 = $foundfile2;

if(!empty($val2)){
    $filename = date(dmY);
    $filename .= ".jpg";

  $dir2 ='botd/new';
  $dir ='pic/OpenSource_Babes';
  $name = "$filename";

copy ("$dir2/$foundfile2", "$dir/$filename");
    unlink("$dir2/$foundfile2");
    $val = $filename;   
}

}

$indhold = "
        <br>
        <div align=center>
            <a href=\"?page=billeder/thumbs&showpic=OpenSource_Babes&show=$val\">
                <img src=\"botd/thumb.php?showpic=OpenSource_Babes&file=$val\" border=0 ALT=\"$val\">
            <br><font>[Stort billede]</font>
            </a>
           
           
        </div>
        <br>
";
Avatar billede andy Nybegynder
29. april 2003 - 22:03 #11
Man kan ikke unlinke en fil der ikke er ejet af "nobody" eller hvad apache nu kører som, når safe_mode er enabled og filen ikke er chmod'ed 777.
Avatar billede swaq Nybegynder
22. maj 2004 - 01:01 #12
lukketid
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