Avatar billede thomasdaco Nybegynder
21. oktober 2011 - 16:23 Der er 12 kommentarer og
1 løsning

Unlink virker ikke. PHP

Jeg har en slette funktion som ikke vil slette den billede fil som ligger i upload mappen.

Den sletter fint filens URL i databasen men ikke selve filen.
min kode er :

if ($picture_url != 'upload/test.jpg') {
unlink("$picture_url");
}

Jeg har en "foto på vej" standin billede som hedder test.
Og det ønsker jeg jo ikke slettet derfor ser koden ud som vist.

$picture_url indeholder også den rigtige sti men jeg får følgende fejl når jeg køre mit script.

Warning: unlink(upload/bf7c2549ff472cff4d8cd4425ed37442.jpg;): No such file or directory

Det eneste jeg kan se som måske er fejlen er tegnet ; efter jpg
for det hedder filen jo ikke.

Hvad siger I ?
Avatar billede arne_v Ekspert
21. oktober 2011 - 16:32 #1
unlink virker paa filer ikke URL'er og filnavne vil typisk have en anden rod end URL'er, saa proev og angiv en absolut sti eller paa anden vis find det upload dir.
Avatar billede heinzdmx Nybegynder
21. oktober 2011 - 16:37 #2
Document['root'] giver dig stien til www-mappen

Så kan du bruge den sammen med arne's løsning
Avatar billede thomasdaco Nybegynder
22. oktober 2011 - 09:15 #3
I må undskylde mit forkert ordvalg.
Det er ikke en rigtigt URL, men bare et navn som jeg har givet det.

Det omhandler en billede fil som jeg ikke kan slette.
Den frembringer den fejl som jeg postet i første indlæg.
Avatar billede heinzdmx Nybegynder
22. oktober 2011 - 13:14 #4
Du har en relativ (ingen rod). Du skal bruge en absolut
Avatar billede thomasdaco Nybegynder
22. oktober 2011 - 15:26 #5
Arhh så det her er en løsning ?

unlink($_SERVER['DOCUMENT_ROOT']/ov/$picture_url);


filen som køre dette script ligger i mappen OV.
Og $picture_url indeholder stien publib/23434445f5rc45w.jpg
Hvor også billederene ligger.

Ny får jeg denne fejl -> Warning: Division by zero
Avatar billede heinzdmx Nybegynder
22. oktober 2011 - 15:36 #6
unlink($_SERVER['DOCUMENT_ROOT'].'/ov/'.$picture_url);


Du havde glemt apostroferne omkring /ov/

Mit gæt på at du får en division by zero er at en tom variable er initialiseret til 0
Avatar billede thomasdaco Nybegynder
22. oktober 2011 - 15:52 #7
Jeg har faktisk ligge rettet til ->
unlink ($_SERVER['DOCUMENT_ROOT'].'/ov/'.$picture_url);

får denne fejl ->

Warning: unlink(/hsphere/local/home/blablabla/blabla.dk/ov/upload/fd6f483a93bc1bd6d0d14f8164702253.jpg;): No such file or directory
Avatar billede thomasdaco Nybegynder
22. oktober 2011 - 16:36 #8
Jeg mener stadig fejlen ligger i at jeg har et ; mellem jpg og )
i selve den fejlmelding jeg får.
Avatar billede heinzdmx Nybegynder
22. oktober 2011 - 21:17 #9
Hvor kommer det semikolon fra? Er det i din tekststring (lav en test echo).

Hvis det er i selve strengen så kan du lave en:


$file=eregi_replace(';$', '', $_SERVER['DOCUMENT_ROOT'].'/ov/'.$picture_url);

unlink($file);


$ betyder fra enden af strengen. Det midterste '' er hvad den erstatter med og den sidste er hvad du kommer ind i den.
Avatar billede thomasdaco Nybegynder
23. oktober 2011 - 09:47 #10
Jeps, det virker :)
Men hele denne underlige fejl havede jeg også uden brug af $_SERVER['DOCUMENT_ROOT'] !

Men min lille IF bliver så ikke overhold ved at bruge din løsning.

if ($picture_url != 'upload/test.jpg') {
$file=eregi_replace(';$', '', $_SERVER['DOCUMENT_ROOT'].'/ov/'.$picture_url);
unlink($file);
}

Jeg har jo et et standin billede hvis ikke man uploader et billede. som hedder test.jpg

Hvordan kan din løsning som virker og virke med min if ?
eller skal den omskrives ?
Avatar billede heinzdmx Nybegynder
23. oktober 2011 - 19:52 #11
Jeg ville lave følgende:

$picture_url =eregi_replace(';$', '', $picture_url);

if ($picture_url != 'upload/test.jpg') {
unlink($_SERVER['DOCUMENT_ROOT'].'/ov/'.$picture_url);
}
Avatar billede thomasdaco Nybegynder
24. oktober 2011 - 12:02 #12
@heinzdmx, Det virker sgu, jeg takker. smid et for point.
Avatar billede heinzdmx Nybegynder
24. oktober 2011 - 15:03 #13
Super
;)
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
Kurser inden for grundlæggende programmering

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