In PHP ist LSTAT eine sehr praktische Funktion des Dateisystems, mit der Entwickler Metadaten von Dateien oder Verzeichnissen erhalten können. Im Gegensatz zur STAT -Funktion gibt LSTAT die Metadaten des symbolischen Glieds selbst zurück und nicht die Metadaten des Ziels, auf das der symbolische Glied hinweist. Diese Funktion macht LSTAT besonders wichtig, wenn ein Weg ein symbolischer Glied ist. In diesem Artikel wird detailliert analysiert, wie die LSTAT -Funktion verwendet wird, um festzustellen, ob ein Pfad ein symbolischer Zusammenhang ist, sowie die spezifischen Schritte für die Implementierung.
Die LSTAT -Funktion von PHP wird verwendet, um die Statusinformationen einer bestimmten Pfaddatei oder eines bestimmten Pfaddatei oder eines assoziativen Arrays zurückzugeben. Dieses Array enthält eine Vielzahl von Informationen über die Datei wie Dateigröße, Berechtigungen, Dateityp usw.
Funktionsprototyp:
<span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
Parameter:
$ Dateiname : Gibt den Pfad zur Datei oder zum Verzeichnis an, um abzufragen.
Rückgabewert:
Bei Erfolg gibt LSTAT ein assoziatives Array zurück, das Dateistatusinformationen enthält.
Wenn es fehlschlägt, geben Sie false zurück.
Es ist zu beachten, dass LStat keine symbolischen Links verfolgt, sondern den Zustand des symbolischen Links selbst zurückgibt, nicht das Ziel, auf das es zeigt.
Um festzustellen, ob ein Pfad eine symbolische Verbindung ist, erhalten Sie zunächst die Statusinformationen des Pfades und überprüfen Sie dann das Modusfeld im zurückgegebenen Statusarray. Der Wert des Modusfeldes bestimmt die Art der Datei, einschließlich regulärer Dateien, Verzeichnisse, symbolischen Links usw.
Im Folgenden finden Sie die spezifischen Schritte, um festzustellen, ob der Pfad ein symbolischer Glied ist:
Verwenden Sie LSTAT , um die Statussinformationen einer Datei oder eines Verzeichnisses zu erhalten.
Überprüfen Sie das Modusfeld im Rückgabearray.
Bestimmen Sie, ob es sich um eine symbolische Verbindung durch die S_IflNK -Konstante handelt.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isSymbolicLink</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$path</span></span></span><span>) {
</span><span><span class="hljs-comment">// Dateistatusinformationen abrufen</span></span><span>
</span><span><span class="hljs-variable">$stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>);
</span><span><span class="hljs-comment">// Urteil lstat Erfolgreich</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stat</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法Dateistatusinformationen abrufen。\n"</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-comment">// Urteil文件是否为符号链接</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> ((</span><span><span class="hljs-variable">$stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>] & </span><span><span class="hljs-number">0170000</span></span><span>) === </span><span><span class="hljs-number">0120000</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>; </span><span><span class="hljs-comment">// Es ist ein symbolischer Link</span></span><span>
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>; </span><span><span class="hljs-comment">// 不Es ist ein symbolischer Link</span></span><span>
}
</span><span><span class="hljs-comment">// prüfen</span></span><span>
</span><span><span class="hljs-variable">$path</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/file_or_symlink'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">isSymbolicLink</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$path</span></span></span><span> Es ist ein symbolischer Link。\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$path</span></span></span><span> 不Es ist ein symbolischer Link。\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
LSTAT ($ PATH) : Rufen Sie die LSTAT -Funktion auf, um die Dateistatusinformationen zu erhalten.
LStat gibt falsch zurück, wenn die Datei oder das Verzeichnis nicht vorhanden sind oder der Pfad nicht zugänglich ist.
$ STAT ['Modus'] & 0170000 : Das Feld Modus enthält die Typinformationen der Datei. 0170000 ist die Maske, die zum Extrahieren des Dateityp -Teils verwendet wird. Gemäß den UNIX -Dateiberechtigungen beträgt der Typwert des symbolischen Links 0120000 .
Richter symbolischer Link : if ($ stat ['modus'] & 0170000) === 0120000 bedeutet, dass die Datei ein symbolischer Link ist.
Zusätzlich zu symbolischen Links kann LSTAT auch dazu beitragen, festzustellen, ob eine Datei anderer Typen ist. Über die Maske des Modusfeldes können Sie feststellen, ob es sich bei der Datei um eine reguläre Datei, ein Verzeichnis usw. handelt.
Allgemeine Datei : ($ STAT ['Modus'] & 0170000) === 0100000
Verzeichnis : ($ STAT ['Modus'] & 0170000) === 0040000
Zeichenvorrichtungsdatei : ($ STAT ['Modus'] & 0170000) === 0020000
BLOCK -Gerätedatei : ($ STAT ['Modus'] & 0170000) === 0060000
Pipeline (FIFO) benannt : ($ STAT ['Modus'] & 0170000) === 0010000
Durch die Verwendung der LSTAT -Funktion von PHP können wir die Statusinformationen einer Datei oder eines Verzeichnisses einfach ermitteln und den Dateityp basierend auf dem Modusfeld beurteilen. Es ist sehr einfach zu bestimmen, ob der Pfad ein symbolischer Glied ist. Sie müssen nur LSTAT verwenden, um die Statusinformationen zu erhalten, und zu überprüfen, ob der Dateityp ein symbolischer Link ist. Diese Methode ist sowohl intuitiv als auch effizient und sehr geeignet für Szenarien, in denen Dateisystemvorgänge erforderlich sind.