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.

War es hilfreich?

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

  1. Sie können die Verbindung zum FTP-server

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. Sie können sich auf dem server:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. 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, ob ftp_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.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top