Überprüfen der FTP-status-codes mit einem PHP-Skript
-
08-06-2019 - |
Frage
Ich habe ein Skript, das überprüft, Antworten von HTTP-Servern mithilfe der BIRNE HTTP-Klassen.Allerdings habe ich kürzlich festgestellt, dass das Skript nicht auf FTP-Servern (und wahrscheinlich alles, was nicht HTTP oder HTTPS).Ich habe versucht, Google, aber nicht sehen, keine Skripten oder code, der zurückgegebene das server-status-code von anderen Servern als HTTP-Server.
Wie finde ich den status einer newsgroup oder einem FTP-server mit PHP?
EDIT:Ich sollte klarstellen, dass ich bin nur daran interessiert, in der Fähigkeit, zu Lesen von einem FTP-server und das Verzeichnis, das ich geben.Ich muss wissen, ob der server ist tot/Weg, ich bin nicht befugt, Lesen, etc.
Bitte beachten Sie, dass, obwohl die meisten der Zeit, ich bin sprachneutral, die gesamte website ist PHP-getrieben, so dass eine PHP-Lösung wäre das beste für die einfache Wartbarkeit und Erweiterbarkeit in der Zukunft.
Lösung
HTTP funktioniert etwas anders als FTP-aber leider.Obwohl beide gleich Aussehen kann in Ihrem browser, HTTP Werke aus der basis-URI (d.h.Zugriff auf die Ressource Ein, Sie haben ein Bezeichner, der Ihnen sagt, wie Sie darauf zugreifen zu können).
FTP ist sehr old-school-server gesteuert.Auch anonymous-FTP ist ein bisschen ein hack, da Sie immer noch liefern einen Benutzernamen und ein Passwort, es ist einfach definiert als "anonym" und Ihre E-Mail-Adresse.
Überprüfen, ob ein FTP-server ist, bedeutet die Prüfung
Sie können die Verbindung zum FTP-server
if (!($ftpfd = ftp_connect($hostname))) { ... }
Sie können sich auf dem server:
if (!ftp_login($ftpfd, $username, $password)) { ... }
Dann, wenn weitere zugrunde liegenden Ressourcen, die Sie benötigen, um den Zugriff zu testen, ob eine bestimmte Website, dann verwenden Sie eine geeignete operation für Sie.z.B.auf eine Datei, vielleicht verwenden
ftp_mdtm()
um die letzten änderungs-Zeit oder auf ein Verzeichnis, zu sehen, obftp_nlist()
funktioniert.
Andere Tipps
Wäre es nicht einfacher zu verwenden die gebaut-in PHP, FTP* Funktionalität, als zu versuchen, roll your own?Wenn Sie den URI aus einer Quelle außerhalb Ihrer Kontrolle, würden Sie brauchen, um überprüfen Sie die Protokoll-definition (http:// oder ftp://, etc.), um zu bestimmen, welche Funktionen zu verwenden, aber das ist ziemlich trivial.Wenn es jetzt protocal angegeben (es sollte wirklich sein!) dann könnten Sie versuchen, Standard-http.
- finden hier
Wenn Sie möchten, Lesen Sie spezifische Antworten haben Sie einen socket öffnen und Lesen/schreiben Daten manuell ein.
<?php
$sock = fsockopen($hostname, $port);
?>
Dann haben Sie, um fput/fread Daten hin und her.
Dies wird von Ihnen verlangen, informieren Sie sich über das FTP-Protokoll.