---
title: "Problem med att radera bilder med unlink()"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/187680-problem-med-att-radera-bilder-med-unlink"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Guldstrand"
published: "2011-08-30T18:17:24.000Z"
updated: "2011-08-30T19:16:32.000Z"
replies: 14
views: 1332
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/187680-problem-med-att-radera-bilder-med-unlink"
---

# Problem med att radera bilder med unlink()

## #1 — Guldstrand, 2011-08-30T18:17Z

Jag håller på med en kod som automatiskt ska radera bildfiler på min server efter 3 timmar. (Bilderna blir dock inte raderade från servern.)

Är det jag som tänker helt fel, eller varför blir inte bilderna raderade med hjälp av följande kod.

```php
	$hours = 3;
	$dt = get_date_time(gmtime() - ($hours * 3600));

	$res = mysql_query("SELECT id, webcam_id, filename FROM archive WHERE added < $dt");
	while ($arr = mysql_fetch_assoc($res))
	{
			@unlink("/cam/webcam_" .intval($arr["webcam_id"]). "/" .htmlspecialchars($arr["filename"]). "");
			mysql_query("DELETE FROM archive WHERE webcam_id = " .intval($arr["webcam_id"]). "");

	}
```

Är oerhört tacksam för lite hjälp i rätt riktning.

Permalänk: https://www.webforum.nu/p/187680

## #2 — dwmedia, 2011-08-30T18:23Z

unlink("../../../userpics.smsnetwork.org/public_html/{$\_SESSION\['sess_recruitment_link'\]}.jpg");

Så där kör jag med. 

Du kan ju ta modda om dem.

Permalänk: https://www.webforum.nu/p/2282629

## #3 — Guldstrand, 2011-08-30T18:25Z

> **[dwmedia skrev:](https://www.webforum.nu/p/1539427)**
>
> unlink("../../../userpics.smsnetwork.org/public_html/{$\_SESSION\['sess_recruitment_link'\]}.jpg");
> 
> Så där kör jag med. 
> 
> Du kan ju ta modda om dem.

Tack för svaret, men det hjälper tyvärr inte mig.
Sökvägen till bilden, är korrekt.

Permalänk: https://www.webforum.nu/p/2282630

## #4 — metalboy, 2011-08-30T18:26Z

Du bör absolut ta bort @-tecknet innan anropet till unlink. Det gör ju så att eventuella felmeddelanden inte visas.

Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.

Permalänk: https://www.webforum.nu/p/2282632

## #5 — dwmedia, 2011-08-30T18:31Z

> **[metalboy skrev:](https://www.webforum.nu/p/1539430)**
>
> Du bör absolut ta bort @-tecknet innan anropet till unlink. Det gör ju så att eventuella felmeddelanden inte visas.
> 
> Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.

Det stämmer helt fint :-)
han fick ta en liten titt på hur man har löst det själv :)

Så det går ju lösa hans problem om man vill, men vore ju gött om dem tog sig och titta eller tittar man på 

<http://se.php.net/manual/en/function.unlink.php>

Permalänk: https://www.webforum.nu/p/2282633

## #6 — dwmedia, 2011-08-30T18:39Z

```
$hours = 3;
$dt = get_date_time(gmtime() - ($hours * 3600));

$sql = "SELECT id, webcam_id, filename FROM archive WHERE added < $dt";
$result = mysql_query($sql, $conn);
while($row = mysql_fetch_array($result)) {

unlink("/cam/webcam_{$row['webcam_id']}/{$row['filename']}");

$sql = "DELETE FROM archive WHERE webcam_id = '{$row['webcam_id']}' LIMIT 1";
mysql_query($sql) or die("SQL: $sql<br />" . mysql_error());
}
```

och skulle mappen vara utanför så bör du lägga till .. innan /

Sedan tiden kan du med hjälp av Datum Intervall också lösa det istället än ta ut den på det sätt du har gjort för snygga till koden direkt i mysql. 

Du har en liten början där i alle fall.

Permalänk: https://www.webforum.nu/p/2282635

## #7 — Guldstrand, 2011-08-30T18:42Z

> **[metalboy skrev:](https://www.webforum.nu/p/1539430)**
>
> Sen är de tomma strängarna i slutet av argumenten till unlink och mysql_query helt onödiga. Påverkar visserligen inte ditt problem, men det gör filen större helt i onödan.

Vad menar du med "tomma strängar"? De är inte tomma.

Permalänk: https://www.webforum.nu/p/2282636

## #8 — metalboy, 2011-08-30T18:42Z

**""** är en tom sträng.

Permalänk: https://www.webforum.nu/p/2282637

## #9 — Guldstrand, 2011-08-30T19:04Z

> **[metalboy skrev:](https://www.webforum.nu/p/1539435)**
>
> **""** är en tom sträng.

Hade uppskattat något mer hjälp än så, men tror dock att jag förstod poängen ändå.

Permalänk: https://www.webforum.nu/p/2282639

## #10 — metalboy, 2011-08-30T19:05Z

Som jag skrev så hade det jag skrev om tomma strängar ingenting med ditt problem att göra, det var bara ett allmänt tips.

Fick du något felmeddelande när du tog bort @-tecknet?

Permalänk: https://www.webforum.nu/p/2282640

## #11 — Guldstrand, 2011-08-30T19:08Z

> **[metalboy skrev:](https://www.webforum.nu/p/1539438)**
>
> Som jag skrev så hade det jag skrev om tomma strängar ingenting med ditt problem att göra, det var bara ett allmänt tips.
>
> Fick du något felmeddelande när du tog bort @-tecknet?

Nej, jag fick inget felmeddelande, fast att error reporting är "aktiverat".
Jag misstänkte att mysql kanske returnerade ett tomt värde, och att det var därför som inte bilderna kunde raderas?

Ska kolla om det fungerar bättre vid nästa körning.

Permalänk: https://www.webforum.nu/p/2282641

## #12 — metalboy, 2011-08-30T19:10Z

Är felrapporteringsnivån inställd på att visa även E_WARNING?
Kommer du in i while-loopen?
Vad returnerar unlink? true/false
Är du helt 100% säker på att sökvägen är korrekt? Tänk på att **/** utgår från diskroten, inte webbroten.

Permalänk: https://www.webforum.nu/p/2282642

## #13 — Guldstrand, 2011-08-30T19:12Z

Ja, det är inställt på E_WARNING.
Vet ej om jag ens kommer in i loopen (är dålig på felsökning).
Samma med unlink, vet inte.

Ja, jag är helt säker på sökvägen.

Permalänk: https://www.webforum.nu/p/2282643

## #14 — metalboy, 2011-08-30T19:15Z

För att kolla om du kommer in i while-loopen kan du helt enkelt lägga in
**echo "Inne i while"** på lämplig rad :)

Lägg till en if-sats för att kontrollera vad unlink returnerar.
**if (unlink(*sökväg*))
   echo "unlink returnerade TRUE"
else
   echo "unlink returnerade FALSE"**

Permalänk: https://www.webforum.nu/p/2282644

## #15 — Guldstrand, 2011-08-30T19:16Z

Ja, det var ju väldigt enkelt.
Ska testa med detta. Tack!

**EDIT:** Efter lite lätt felsökning (tack till "metalboy"), märkte jag att sökvägen till bilden, trots allt var fel.
(Den första / skulle tydligen bort.)
Får försöka att svälja min stolthet, och anse mig besegrad. 

Tack för all hjälp.

Permalänk: https://www.webforum.nu/p/2282645

---

Tråden på webben: https://www.webforum.nu/amne/php/187680-problem-med-att-radera-bilder-med-unlink
