Ce face is_writable / is_readable
is_writable returnează true dacă fișierul sau directorul există și utilizatorul cu care rulează PHP are drept de scriere. is_readable face același lucru pentru citire. Există și aliasul is_writeable.
Pe un server web, PHP rulează de obicei ca alt utilizator decât tine (de exemplu www-data), deci un director în care poți scrie tu prin FTP poate să nu fie scriibil pentru PHP.
Parametri
| Parametru | Descriere |
|---|---|
$filename |
Fișierul sau directorul verificat. |
Ce returnează
true dacă dreptul există, altfel false (și pentru căi inexistente).
Exemple
Exemplul 1: Fișier protejat la scriere
<?php
file_put_contents("setari.txt", "tema = luminoasa");
var_dump(is_writable("setari.txt"));
chmod("setari.txt", 0444);
var_dump(is_writable("setari.txt"));
var_dump(is_readable("setari.txt"));
Rezultat
bool(true)
bool(false)
bool(true)
Exemplul 2: Verificare înainte de încărcarea fișierelor
<?php
mkdir("uploads");
if (!is_dir("uploads") || !is_writable("uploads")) {
exit("Directorul uploads lipsește sau nu are drept de scriere.");
}
echo "Gata pentru încărcare";
Rezultat
Gata pentru încărcare
Greșeli frecvente
- Verifici
is_writablepe un fișier care nu există încă. Rezultatul estefalse. Verifică directorul în care urmează să îl creezi. - Testezi scriptul din terminal cu utilizatorul tău, iar pe site PHP rulează cu alt utilizator. Rezultatele pot fi diferite.
Comenzi înrudite
chmod: Schimbă permisiunile unui fișier sau director (cine îl poate citi, scrie sau rula).file_exists: Verifică dacă un fișier sau un director există pe disc.is_dir: Verifică dacă o cale indică un director existent.fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.