Ce face tempnam
tempnam generează un nume care nu există încă în directorul dat, creează fișierul gol și îți dă calea completă. Numele începe cu prefixul ales, urmat de caractere aleatorii.
Fișierul nu se șterge singur: îl ștergi cu unlink când nu mai ai nevoie de el. Dacă vrei un fișier care dispare automat, folosește tmpfile.
Parametri
| Parametru | Descriere |
|---|---|
$directory |
Directorul în care se creează fișierul. De obicei sys_get_temp_dir(). |
$prefix |
Începutul numelui. Doar primele 63 de caractere sunt folosite. |
Ce returnează
Calea completă a fișierului nou sau false la eroare.
Exemple
Exemplul 1: Fișier unic cu prefix
Numele exact diferă la fiecare rulare, de aceea afișăm doar verificări.
<?php
$fisier = tempnam(".", "factura_");
var_dump(file_exists($fisier));
var_dump(str_starts_with(basename($fisier), "factura_"));
var_dump(filesize($fisier));
unlink($fisier);
Rezultat
bool(true)
bool(true)
int(0)
Exemplul 2: Scriere sigură: întâi temporar, apoi redenumire
Cine citește pagina.html vede fie varianta veche, fie pe cea nouă completă, niciodată un fișier scris pe jumătate.
<?php
file_put_contents("pagina.html", "<p>Varianta veche</p>");
$temporar = tempnam(".", "pagina_");
file_put_contents($temporar, "<p>Varianta nouă</p>");
rename($temporar, "pagina.html");
echo file_get_contents("pagina.html");
Rezultat
<p>Varianta nouă</p>
Greșeli frecvente
- Dai un director care nu există. PHP creează fișierul în directorul temporar al sistemului și afișează
Notice: tempnam(): file created in the system's temporary directory. - Uiți să ștergi fișierul, iar directorul temporar se umple în timp. Apelează
unlinkla final.
Comenzi înrudite
tmpfile: Creează un fișier temporar deschis pentru citire și scriere, care se șterge singur la închidere.sys_get_temp_dir: Returnează calea directorului pentru fișiere temporare al sistemului (de obicei /tmp).unlink: Șterge un fișier de pe disc.rename: Redenumește sau mută un fișier ori un director.