in lokalen Dateien schreiben ist eine der Funktionen, die viele Plugins und Themen für verschiedene Zwecke benötigen. Sicherheit ist das wichtigste Problem, das Plugins und Themen beim Schreiben in lokale Dateisysteme kümmern müssen. WordPress läuft über verschiedene Hosting -Dienste und -konfigurationen hinweg. Daher wird es für Entwickler schwierig, Plugins und Themen zu erstellen, die auf lokale Dateisysteme zugreifen, um in allen Arten von Umgebungen zu arbeiten, ohne die Sicherheit zu beeinträchtigen.
In diesem Tutorial erfahren wir, wie Sie die WordPress -Dateisystem -API verwenden, um auf lokale Dateisysteme zuzugreifen, die die ordnungsgemäßen Dateiberechtigungen erledigen. Dabei erstellen wir ein Plugin, das ein Formular mit einem Textbereich in einer Administratorseite anzeigt, auf dem der Inhalt der TextArea in einer Datei speichert.
Key Takeaways
- Die WordPress -Dateisystem -API bietet eine sichere Methode für Plugins und Themen zum Schreiben in lokale Dateisysteme und behandelt die Dateiberechtigungen automatisch. Dies ist angesichts der Vielfalt der Hosting -Dienste und -konfigurationen, die WordPress über.
Die API kann über Systemaufrufe an Dateisysteme schreiben und die am besten geeignete Methode basierend auf Dateiberechtigungen und verfügbaren PHP -Erweiterungen auswählen. Es kann auch Benutzeranmeldeinformationen für FTP- oder SSH -Verbindungen speichern. -
Das Tutorial zeigt, wie ein Plugin mit der API erstellt wird. Das Plugin zeigt ein Formular auf einer Administratorseite an und speichert den Inhalt einer TextArea in einer Datei. Das Tutorial bietet Codes zum Erstellen von Plugin -Dateien und -verzeichnissen, Erstellen einer Administratorseite und zum Schreiben und Lesen von einer Datei. -
Das Objekt $ wp_filesystem, eine Instanz der WP_FILESSYSTEM -Klasse, enthält Methoden zum Lesen, Erstellen, Schreiben und Löschen von Dateien. Weitere verfügbare Methoden sind Löschen, Mkdir, Bewegung, Größe und Chmod. -
WordPress speichert nicht standardmäßig FTP- oder SSH-Anmeldeinformationen dauerhaft, kann jedoch dauerhaft mit der Datei wp-config.php gespeichert werden. Dies vermeidet die Notwendigkeit, Anmeldeinformationen jedes Mal erneut einzugeben, wenn das Plugin mit dem Dateisystem interagiert. -
Warum die WordPress -Dateisystem -API verwenden?
Sie fragen sich vielleicht, warum wir nicht nur die Dateisystemfunktionen von PHP verwenden, um lokale Dateien zu lesen und zu schreiben, anstatt zu lernen und einen völlig neuen Satz von APIs zu verwenden?
Das Problem der Verwendung von PHP -Dateisystem -APIs besteht darin, dass es nicht automatisch um Dateiberechtigungen sorgt. Nehmen wir an, Sie verwenden einen gemeinsam genutzten Hosting -Dienst, um Ihre WordPress -Site zu hosten, und Ihr Hosting -Webserver wird als "Administrator" -Betriebssystemkonto ausgeführt. Wenn Sie Dateien mit PHP erstellen, sind sie als "Administrator" -Nutzer gehören. Daher kann jede andere auf demselbe gemeinsam genutzte Hosting gehostete Website auch auf Ihre Website -Dateien zugreifen, da sie auch als "Administrator" -Nutzer ausgeführt werden und ein Sicherheitsproblem für Ihre Website dargestellt werden. Um uns vor diesem Problem zu schützen, müssen Sie den Dateibesitzer und die Berechtigungen mit Php.
manuell ändern
Aber wenn Sie sich mit SSH oder FTP/SFTP anmelden, um Dateien zu erstellen, sind sie im Besitz des Benutzerkontos des Betriebssystems, in dem Sie angemeldet sind. Wenn der FTP -Server als "Administrator" ausgeführt wird und Sie als "Narayanprrusty" -Nutzer angemeldet sind, haben neu erstellte Dateien einen Eigentümer als "Narayanprrusty", nicht "admin".
WordPress hat die Dateisystem -API eingeführt, die automatisch die Dateiberechtigungen erledigt. Die Dateisystem -API wurde in WordPress 2.6 veröffentlicht. WordPress hat es tatsächlich veröffentlicht, um das Plugin-, Themen- und Core -Update -System zu unterstützen, aber später Plugins und Themen beginnen es für ihre eigenen Zwecke.
Wie funktioniert die Dateisystem -API?
Die Dateisystem -API kann mit Systemaufrufen an Dateisysteme schreiben (d. H. Direkte, FTP, FTP -Socket oder SSH2). Es wählt eine der Methoden aus, basierend auf der Methode, die Dateien mit geeigneten Dateiberechtigungen erstellt und welche PHP -Erweiterung verfügbar ist. Die Dateisystem -API überprüft zunächst die direkte Methode, dann FTP und schließlich SSH2.
Während der Verwendung von FTP oder SSH müssen Sie die Anmeldeinformationen von Ihrem Benutzer abrufen. Die Dateisystem -API bietet Funktionen, ein Formular anzuzeigen, um Anmeldeinformationen anzunehmen und zu speichern.
Erstellen unserer Plugin -Dateien und des Verzeichnisses
Lassen Sie uns nun unser Plugin erstellen, das eine textarea auf einer Seite anzeigt, auf der das Senden des Formulars den Inhalt der TextArea in einer lokalen Datei speichert.
Hier ist die Verzeichnisstruktur unseres Plugins:
--filesystem
--filesystem.php
--filesystem-demo
--demo.txt
Nach dem Login kopieren
Nach dem Login kopieren
Erstellen Sie diese Dateien und Verzeichnisse im Verzeichnis WP-Content/Plugins Ihrer WordPress-Installation.
Um das Plugin installierbar zu machen, setzen Sie diesen Code in die Dateisystem.php -Datei:
<span><span><?php
</span></span><span>
</span><span><span>/*
</span></span><span><span>Plugin Name: Filesystem API
</span></span><span><span>Plugin URI: http://www.sitepoint.com
</span></span><span><span>Description: A sample plugin to demonstrate Filesystem API
</span></span><span><span>Version: 1.0
</span></span><span><span>Author: Narayan Prusty
</span></span><span><span>*/</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Besuchen Sie jetzt Ihr Administratorfeld und installieren Sie das Plugin.
Erstellen einer Administratorseite
Als nächstes benötigen wir eine Seite in unserem Administrator, auf der sich unser Beispiel befindet. Hier ist der Code, um diese Seite zu erstellen und die textarea anzuzeigen. Platzieren Sie diesen Code einfach in die Dateisystem.php -Datei:
function menu_item()
{
add_submenu_page("options-general.php", "Demo", "Demo", "manage_options", "demo", "demo_page");
}
add_action("admin_menu", "menu_item");
function demo_page()
{
?>
<span><span><span><div</span> class<span>="wrap"</span>></span>
</span> <span><span><span><h1</span>></span>Demo<span><span></h1</span>></span>
</span> <span><span><span><form</span> method<span>="post"</span>></span>
</span> <span><span><?php
</span></span><span> <span>$output = "";
</span></span><span>
</span><span> <span>if(isset($_POST["file-data"]))
</span></span><span> <span>{
</span></span><span> <span>$output = write_file_demo($_POST["file-data"]);
</span></span><span> <span>}
</span></span><span> <span>else
</span></span><span> <span>{
</span></span><span> <span>$output = read_file_demo();
</span></span><span> <span>}
</span></span><span>
</span><span> <span>if(!is_wp_error($output))
</span></span><span> <span>{
</span></span><span> <span>?></span>
</span> <span><span><span><textarea</span> name<span>="file-data"</span>></span><span><?php echo $output; ?></span><span><span></textarea</span>></span>
</span> <span><span><?php wp_nonce_field("filesystem-nonce"); ?></span>
</span> <span><span><span><br</span>></span>
</span> <span><span><span><input</span> type<span>="submit"</span>></span>
</span> <span><span><?php
</span></span><span> <span>}
</span></span><span> <span>else
</span></span><span> <span>{
</span></span><span> <span>echo $output->get_error_message();
</span></span><span> <span>}
</span></span><span> <span>?></span>
</span> <span><span><span></form</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><?php
</span></span><span><span>}</span></span>
Nach dem Login kopieren
So funktioniert der Code:
- Zuerst haben wir dem Menü "Einstellungen" eine Seite hinzugefügt. Demo_Page ist der Rückruf zum Anzeigen des Seiteninhalts.
- In der Seite zeigen wir ein HTML -Formular mit einem Textbereich und Nonce -Feld an. Es gibt auch einen Senden -Schaltfläche, um das Formular einzureichen. Der Textbereich Name ist Dateidaten. Der Nonce wird hinzugefügt, um einen CSRF -Angriff zu verhindern.
- Wenn die Seite geöffnet ist, rufen wir die gespeicherten Dateidaten mit der Funktion read_file_demo ab. Wenn das Formular eingereicht wird, speichern wir den Inhalt der TextArea in einer Datei mit der Funktion write_file_demo.
- Wenn read_file_demo oder write_file_demo eine Instanz des WP_Error -Objekts zurückgibt, werden wir stattdessen eine Fehlermeldung angezeigt.
Beachten Sie, dass der obige Code Ihre WordPress -Site unterbrochen wird, da wir die Funktionen read_file_demo und write_file_demo noch nicht erstellt haben. Lassen Sie sie sie jetzt erstellen!
in eine Datei schreiben
Hier ist die Implementierung unserer Funktion write_file_demo:
--filesystem
--filesystem.php
--filesystem-demo
--demo.txt
Nach dem Login kopieren
Nach dem Login kopieren
So funktioniert der Code:
- Zuerst haben wir uns auf das globale $ wp_filesystem -Objekt in der Funktion verwiesen. Dieses Objekt ist eine Instanz der WP_FILESSYSTEM -Klasse. Es ist dafür verantwortlich, verschiedene Methoden zum Lesen, Erstellen, Schreiben und Löschen von Dateien aufzudecken.
- Als nächstes erstellen wir eine Nonce -URL unserer Formularseite und ein Array mit den Feldnamen unseres Formulars.
- Schließlich stellen wir mit der Funktion Connect_fs eine Verbindung zum Dateisystem her.
- Connect_FS verwendet die von WordPress bereitgestellte Funktion request_filesystem_credentials, um eine geeignete Methode zu finden, um eine Verbindung zum Dateisystem herzustellen (Direkt, FTP oder SSH). Im Falle von FTP oder SSH wird ein Formular wiedergegeben, um die Anmeldeinformationen des Benutzers zu fragen. Bei direkter Methode gibt es einfach true zurück.
- Wenn das Formular für das Textbereich eingereicht wird und die Request_filesystem_credentials wählt, werden die FTP- oder SSH-Methode gewählt, dann zeigen wir das Formular für Anmeldeinformationen an und versteckt das Feld Dateidaten im Formular Anmeldeinformationen.
- request_filesystem_credentials function der erste parameter nimmt eine URL, in der es umleitet, sobald sie die richtigen Anmeldeinformationen erhalten. Die Umleitung ist vom Typ Postanfrage. Der letzte Parameter von Request_Filesystem_credentials ist ein Array der Feldnamen, die auf die Umleitungs -URL veröffentlichen können.
- Sobald das Formular für Anmeldeinformationen eingereicht wurde, leitet es dann wieder auf das ursprüngliche Formular um, die URL mit ordnungsgemäßen Feldnamen und den vom Benutzer eingegebenen Werten senden.
- Der gesamte Prozess startet erneut und wir führen die Write_File_Demo aus. Diesmal hat Request_Filesystem_credentials die Anmeldeinformationen, daher wird einfach wahr zurückgegeben.
- Dann verwenden wir $ WP_FILESSYSTEM-> FIDE_FOLDER, um sich auf den Ordner zu beziehen. Dann erstellen wir den vollständigen Pfad der Demo.txt -Datei.
- Wir haben $ wp_filesystem-> put_contents verwendet, um Daten in die Datei zu schreiben.
Hinweis: Wenn Sie versuchen, die Methoden des Objekts von $ WP_FILESSYSTEM zu verwenden, ohne Anmeldeinformationen zu anfordern und zu überprüfen, funktionieren sie nicht.
Lesen einer Datei
Hier ist die Implementierung der Funktion read_file_demo.
<span><span><?php
</span></span><span>
</span><span><span>/*
</span></span><span><span>Plugin Name: Filesystem API
</span></span><span><span>Plugin URI: http://www.sitepoint.com
</span></span><span><span>Description: A sample plugin to demonstrate Filesystem API
</span></span><span><span>Version: 1.0
</span></span><span><span>Author: Narayan Prusty
</span></span><span><span>*/</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Hier ist, wie der Code funktioniert:
- Beim Lesen der Demo.txt -Datei stellen wir zunächst eine Verbindung zum Dateisystem mit der Funktion request_filesystem_credentials her.
- Diesmal übergeben wir keine Formularfelder im letzten Parameter, da das Formular nicht eingereicht wird. Wir bestehen nur die Umleitungs -URL, damit sie nach dem Abnehmen der Anmeldeinformationen umgeleitet wird.
- Wir überprüfen dann, ob die Datei mit der Funktion $ wp_filesystem-> existiert. Es gibt keine Datei. Wir zeigen einen Fehler an. Andernfalls lesen wir die Datei mit der Funktion $ WP_FILESSYSTEM-> GET_CONTENTS und senden den Inhalt zurück.
Angenommen, WordPress hat FTP als geeignete Methode zum Erstellen von Dateien ausgewählt. Hier finden Sie die Screenshots des gesamten Prozesses:
Wenn wir die Demo -Seite öffnen, sehen wir dieses Formular:
Hier müssen wir FTP- oder FTPS -Anmeldeinformationen eingeben und einreichen. Sobald wir es eingereicht haben, werden wir dieses Formular sehen:
Es wurde ein leerer Textbereich angezeigt. Geben Sie den Text "Hallo Welt !!!" ein Senden Sie das Formular ein. Sie werden erneut das Formular für Anmeldeinformationen sehen.
Sie müssen es erneut füllen, da WordPress das FTP-Kennwort standardmäßig nicht speichert (dies können dies später in wp-config.php tun). Jedes Mal, wenn Ihr Plugin mit einem Dateisystem arbeiten muss, muss es Anmeldeinformationen fragen. Wenn Sie nun einreichen, wird es auf die Umleitungs -URL mit Feldnamen und Werten umgeleitet, die zuvor übermittelt wurden. So erscheint der Textbereich:
Hier lesen wir den Inhalt der Datei und zeigen sie an.
Andere Methoden des Objekts $ wp_filessystem
Das Objekt $ wp_filesystem bietet viele andere Methoden, um verschiedene andere Vorgänge in Dateien und Verzeichnissen auszuführen. Wir haben gerade das Schreiben und Lesen von N -Datei gesehen. Sie finden die gesamte Liste dessen, was Sie auf der Seite WP_FILESSYSTEM_BASE () tun können.
Schauen wir uns einige der wichtigsten an:
- $ wp_filesystem-> löschen: Delete wird zum Löschen einer Datei oder eines Verzeichnisses verwendet. Sie müssen eine Zeichenfolge übergeben, die den Pfad darstellt.
- $ wp_filesystem-> mkdir: Mkdir wird verwendet, um ein Verzeichnis zu erstellen. Es dauert eine Zeichenfolge, die das übergeordnete Verzeichnis darstellt.
- $ wp_filesystem-> move: Move wird verwendet, um die Datei zu verschieben und dauert zwei Parameter, d. H. Der erste ist der Pfad der Datei, und zweites ist das Verzeichnis, in dem es auf.
verschoben werden soll. -
$ wp_filesystem-> Größe: Größe gibt die Größe einer Datei in Bytes zurück. Sie müssen den Pfad einer Datei übergeben. -
$ wp_filesystem-> chmod: Chmod wird verwendet, um die Berechtigungen einer Datei zu ändern. Es dauert drei Argumente, d. H. Pfad der Datei, die Erlaubnis Oktalnummer und Boolesche, die Rekursion darstellt.
Sie können feststellen, welche Verbindungsmethode von WordPress verwendet wird, um mit $ WP_FILESSYSTEM-> METHODE PUBLIC-Eigenschaft auf das Dateisystem zuzugreifen.
dauerhaft Anmeldeinformationen
speichern
Wir haben gesehen, dass WordPress die FTP- oder SSH -Anmeldeinformationen nicht dauerhaft speichert. Es ist nicht benutzerfreundlich, immer wieder um Details zu fragen. Es gibt eine Möglichkeit, die Anmeldeinformationen dauerhaft mit der Datei wp-config.php zu speichern.
Verwenden Sie diese Optionen, um die FTP- und SSH -Anmeldeinformationen zu speichern:
- ftp_host: Der Hostname des Servers.
- ftp_user: Der Benutzername, der während der Verbindung verwendet wird.
- ftp_pass: Das zu verwendende Kennwort beim Anschließen
- ftp_pubkey: Der Pfad des öffentlichen Schlüssels, der bei der Verwendung von SSH2 -Verbindung verwendet wird.
- ftp_prikey: Der Pfad des privaten Schlüssels, der bei der Verwendung von SSH2 -Verbindung verwendet wird.
Schlussfolgerung
In diesem Artikel haben wir den Prozess des Entwerfens einer Administratorseite gesehen, auf der über die WordPress -Dateisystem -API auf unser Dateisystem zugegriffen wird. Wenn Sie versuchen, in einem Hintergrundprozess auf ein Dateisystem zuzugreifen (z. B. die Verwendung eines Cron -Jobs), können Sie das Formular für Anmeldeinformationen bei Bedarf nicht angezeigt. In diesem Fall müssen Sie sicherstellen, dass Sie Ihren Benutzer benachrichtigen Um die Anmeldeinformationen in der Datei wp-config.php zu platzieren. Sie können mit dieser API weiter experimentieren und Ihre Erfahrungen mit uns unten teilen.
häufig gestellte Fragen (FAQs) zu WordPress -Dateisystem -API
Was ist die WordPress -Dateisystem -API und warum ist es wichtig? . Es ist wichtig, da es eine sichere und zuverlässige Möglichkeit bietet, mit dem Dateisystem auf Ihrem Server zu interagieren. Dies ist entscheidend für Aufgaben wie das Erstellen, Ändern oder Löschen von Dateien und Verzeichnissen, das Hochladen von Mediendateien oder die Aktualisierung Ihrer WordPress -Installation. API funktioniert, indem Sie eine Reihe von Funktionen bereitstellen, mit denen Sie mit dem Dateisystem auf Ihrem Server interagieren können. Diese Funktionen werden die zugrunde liegenden Dateisystemvorgänge abstrahieren und eine konsistente Schnittstelle unabhängig vom Betriebssystem oder des Dateisystems des Servers bereitstellen. Dies bedeutet, dass Sie dieselben Funktionen verwenden können, um mit dem Dateisystem auf einem Linux -Server wie auf einem Windows -Server mit dem Dateisystem zu interagieren. >
Um die WordPress-Dateisystem-API in Ihren eigenen Plugins oder Themen zu verwenden, müssen Sie zunächst die Datei 'WP-Admin/include/file.php' einfügen, die die Funktionen der API enthält. Danach können Sie die Funktionen der API verwenden, um mit dem Dateisystem zu interagieren. Beispiel Dateien löschen.
Was sind die Vorteile der Verwendung der WordPress -Dateisystem -API über herkömmliche PHP -Dateisystemfunktionen? des Betriebssystems oder des Dateisystems des Servers. Dies bedeutet, dass Sie Code schreiben können, der auf jedem Server funktioniert, ohne sich um die Unterschiede zwischen verschiedenen Dateisystemen sorgen zu müssen. Darüber hinaus bietet die API ein höheres Sicherheitsniveau, indem sichergestellt wird, dass alle Dateivorgänge mit den richtigen Berechtigungen ausgeführt werden. Verwenden Sie die WordPress -Dateisystem -API, um Dateien hochzuladen. Die API enthält eine Funktion namens "WP_handle_Upload ()", die den gesamten Upload -Prozess abwickelt, einschließlich der Überprüfung des Dateityps, der Sicherstellung, dass die Datei nicht zu groß ist, und die Datei in das richtige Verzeichnis zu verschieben. Dies erleichtert es einfach, Dateien -Uploads auf sichere und zuverlässige Weise zu verarbeiten. ) 'Damit können Sie überprüfen, ob eine Funktion einen Fehler zurückgegeben hat. Wenn ein Fehler aufgetreten ist, können Sie die Funktion "get_error_message ()" verwenden, um eine menschlich-lesbare Fehlermeldung zu erhalten. Dies erleichtert einfach, Fehler zu behandeln und dem Benutzer ein nützliches Feedback zu geben. So ändern Sie die .htaccess -Datei. Die API bietet eine Funktion namens "Insert_with_markers ()", mit der Sie Zeilen in die .htaccess -Datei zwischen bestimmten Markern einfügen können. Dies erleichtert das Hinzufügen von benutzerdefinierten Regeln in eine sichere und zuverlässige Weise in die Datei .htaccess. Es stellt sicher, dass alle Dateioperationen mit den richtigen Berechtigungen ausgeführt werden und Funktionen zur Bereinigung von Dateinamen und Pfaden bereitgestellt werden. Dies hilft, häufige Sicherheitsprobleme wie Verzeichnisanschläge zu verhindern. Die API bietet eine Funktion namens "wp_mkdir_p ()", die ein Verzeichnis und alle notwendigen übergeordneten Verzeichnisse erstellt. Dies erleichtert das Erstellen komplexer Verzeichnisstrukturen auf zuverlässige Weise. Dateien und Verzeichnisse. Die API bietet eine Funktion namens "Delete ()", mit der sowohl Dateien als auch Verzeichnisse gelöscht werden können. Auf diese Weise können Sie sich selbst aufräumen und sicherstellen, dass Ihr Plugin oder Ihr Thema keine unnötigen Dateien auf dem Server hinterlässt.
Das obige ist der detaillierte Inhalt vonEine Einführung in die WordPress -Dateisystem -API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!