AKTUALISIERT Wie der Titel schon sagt, gibt es eine Möglichkeit, den „Hidden“ oder „Read-Only“ Option auf Windows mit PHP zu wechseln?
Ich möchte dies tun, ohne eine Shell zu öffnen exec()
wenn möglich.
AKTUALISIERT Wie der Titel schon sagt, gibt es eine Möglichkeit, den „Hidden“ oder „Read-Only“ Option auf Windows mit PHP zu wechseln?
Ich möchte dies tun, ohne eine Shell zu öffnen exec()
wenn möglich.
Eine Datei kann nicht versteckt werden, es ist immer im Dateisystem. Es gibt die * NIX-Konvention, dass Dateien, die mit .
beginnen, standardmäßig nicht für bestimmte Operationen angezeigt werden (wie der Befehl ls
), aber nur, wenn Sie nicht stark genug suchen. Das Gleiche gilt für Windows, aber Windows verarbeitet es mit Datei-Meta-Attributen.
Was Sie tun können/sollten, ist die Verwendung von Dateiberechtigungen, um den Ordner/die Datei für jeden zugänglich zu machen, der keinen Zugriff darauf hat. Verwenden Sie dazu chmod
, chown
und chgrp
aus PHP. Möglicherweise müssen Sie jedoch etwas über die richtigen Dateisystemberechtigungen lernen.
Was bedeutet der "Datei Meta Attribute" Teil in Bezug auf PHP? Ist dort eine Antwort versteckt? – Ben
@Steve Nr. :) Es bedeutet nur, dass UNIX bestimmt, ob eine Datei angezeigt werden soll oder nicht, indem überprüft wird, ob der Dateiname mit einem "." Beginnt oder nicht. Windows speichert Metaattribute für eine Datei und betrachtet diese, um die gleiche Entscheidung zu treffen. Es ändert nichts an der Tatsache, dass das die Datei nicht versteckt (in dem Sinne, dass du wahrscheinlich denkst), es beinhaltet es einfach nicht in * bestimmten * Operationen (wie Joe User einen Ordner in Windows Explorer). – deceze
@Steve Ehrlich gesagt habe ich keine Idee, wie diese Berechtigungen/Sichtbarkeit Flags unter Windows festgelegt werden. Sie sollten Ihre Frage aktualisieren, um zu verdeutlichen, dass Sie genau danach suchen. – deceze
Unter Linux/Unix können Sie die Datei verbergen, indem Sie einen Punkt (.
) an den Anfang des Namens setzen und die Funktion chmod
verwenden, um die Datei schreibgeschützt zu machen. Ich bin mir nicht sicher über Windows.
Danke Angus wird es sich ansehen. – Ben
Für die Dateiberechtigungen, versuchen chmod
Funktion:
<?php
chmod("/somedir/somefile", 0755); // octal; correct value of mode
?>
hier Mehr: http://php.net/manual/en/function.chmod.php
Um eine Datei "versteckt" unter Windows machen Sie
attrib +h yourfile.ext
verwenden kann ein machen Datei "schreibgeschützt" unter Windows können Sie
attrib +r yourfile.ext
verwenden
Um diese Befehle von PHP zu verwenden, führen Sie sie einfach mit system oder exec aus.
Siehe auch: Attrib
Während einige Berichte im Web geben, die chmod PHP tatsächlich Windows-Attribut Flags zu setzen wäre in der Lage (zumindest der Nur-Lese-Flag) ich das nicht überhaupt reproduzieren konnte.
Also Beschuss zu einem attrib
Befehl ist der Weg zu gehen.
READ-ONLY unter Windows und * nichts
Hier ist ein Code eine Datei auf read-only das wird unter Windows arbeiten und * nichts:
// set file READ-ONLY (Windows & *nix)
$file = 'path/to/file.ext';
if(isset($_SERVER['WINDIR'])) {
// Host OS is Windows
$file = str_replace('/', '\\', $file);
unset($res);
exec('attrib +R ' . escapeshellarg($file), $res);
$res = $res[0];
}else{
// Host OS is *nix
$res = chmod($file, 0444);
}
//$res contains result string of operation
Hinweise:
Das Ersetzen von '/' durch '\' ist wichtig, da der Shell-Befehl (attrib
) nicht so tolerant ist wie PHP.
$ res ist im Windows-Teil nicht gesetzt, weil exec() an einen vorhandenen Wert anfügt.
auf Windows-HIDDEN
Wenn Sie eine Datei versteckt festlegen möchten, ist dies wahrscheinlich eine nur Windows Aufgabe sein würde:
// set file HIDDEN (Windows only)
$file = 'path/to/file.ext';
$file = str_replace('/', '\\', $file);
unset($res);
exec('attrib +H ' . escapeshellarg($file), $res);
$res = $res[0];
//$res contains result string of operation
"Hidden", in welchem Sinn und auf welchem Betriebssystem? – deceze
Ja ... Unter * nix systems putting leading. im Dateinamen macht es "versteckt" – hummingBird
@deceze - Versteckt, auf Windows, in dem Sinne, wo Sie es im "Folder Options | View" Menü umschalten müssen. @ Playcat - Danke, Angus hat das auch erwähnt. – Ben