Wie überprüfe ich, ob ein Verzeichnis in PHP beschreibbar ist?

Lesezeit: 2 Minuten

Benutzer-Avatar
SeanDowney

Weiß jemand, wie ich überprüfen kann, ob ein Verzeichnis in PHP beschreibbar ist?

Die Funktion is_writable funktioniert nicht für Ordner.

Bearbeiten: Es funktioniert. Siehe akzeptierte Antwort.

Ja, es funktioniert für Ordner ….

Gibt TRUE zurück, wenn der Dateiname existiert und beschreibbar ist. Das Dateiname-Argument kann ein Verzeichnisname sein, mit dem Sie prüfen können, ob ein Verzeichnis beschreibbar ist.

  • Der Trick ist, dass Sie a nicht angeben können Datei die noch nicht in dem Ordner existiert, den Sie wirklich testen möchten – geben Sie einfach den Ordner an.

    – Philfreo

    24. September 2010 um 17:33 Uhr

Benutzer-Avatar
Irfan EVRENS

das ist der Code 🙂

<?php 

$newFileName="/var/www/your/file.txt";

if ( ! is_writable(dirname($newFileName))) {

    echo dirname($newFileName) . ' must writable!!!';
} else {

    // blah blah blah
}

  • Ah, dirname($new_file_name), das ist einfacher als das, was ich tun wollte. Ich wollte verwenden pathinfo($new_file_name,PATHINFO_DIRNAME). Vielen Dank.

    – Buttle Butkus

    24. April 2014 um 7:57 Uhr

genauer gesagt für Eigentümer/Gruppe/Welt

$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";

Frieden…

  • Diese Funktion sollte verbessert werden. Im Moment würde es für Berechtigungen wie “false” zurückgeben 0777.

    – Slava

    27. Januar 2016 um 13:27 Uhr


Möglicherweise senden Sie einen vollständigen Dateipfad an die is_writable() Funktion. is_writable() gibt false zurück, wenn die Datei noch nicht im Verzeichnis existiert. Sie müssen das Verzeichnis selbst mit entferntem Dateinamen überprüfen, wenn dies der Fall ist. Wenn du das tust, is_writable wird Ihnen korrekt sagen, ob das Verzeichnis beschreibbar ist oder nicht. Wenn $file enthält Ihren Dateipfad tun Sie dies:

$file_directory = dirname($file);

Dann benutze is_writable($file_directory) um festzustellen, ob der Ordner beschreibbar ist.

Ich hoffe, das hilft jemandem.

Benutzer-Avatar
QUentin

Entsprechend die Dokumentation für is_writablees sollte einfach funktionieren – aber Sie sagten “Ordner”, das könnte also sein ein Windows-Problem. Die Kommentare deuten darauf hin eine Problemumgehung.

(Eine hastige Lektüre vorhin ließ mich denken, dass nachgestellte Schrägstriche wichtig seien, aber das stellte sich als spezifisch für diese Arbeit heraus).

Benutzer-Avatar
Studocwho

Ich habe ein kleines Skript geschrieben (ich nenne es isWritable.php), die alle Verzeichnisse im selben Verzeichnis erkennt, in dem sich das Skript befindet, und auf die Seite schreibt, ob jedes Verzeichnis beschreibbar ist oder nicht. Hoffe das hilft.

<?php
// isWritable.php detects all directories in the same directory the script is in
// and writes to the page whether each directory is writable or not.

$dirs = array_filter(glob('*'), 'is_dir');

foreach ($dirs as $dir) {
    if (is_writable($dir)) {
        echo $dir.' is writable.<br>';
    } else {
        echo $dir.' is not writable. Permissions may have to be adjusted.<br>';
    } 
}
?>

Benutzer-Avatar
Jason Mock

stat()

Ähnlich wie ein Systemstatus, aber in PHP. Was Sie überprüfen möchten, ist der Moduswert, ähnlich wie bei jedem anderen Aufruf von stat in anderen Sprachen (IE C/C++).

http://us2.php.net/stat

1334430cookie-checkWie überprüfe ich, ob ein Verzeichnis in PHP beschreibbar ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy