Question

J'ai un script qui vérifie les réponses de serveurs HTTP à l'aide de la POIRE HTTP classes.Cependant, j'ai récemment constaté que le script échoue sur les serveurs FTP (et probablement tout ce qui n'est pas le protocole HTTP ou HTTPS).J'ai essayé Google, mais je n'ai vu aucun script ou code renvoyé l'état du serveur de code à partir d'autres serveurs que les serveurs HTTP.

Comment puis-je connaître l'état d'un groupe de discussion ou sur un serveur FTP à l'aide de PHP?

EDIT:Je me dois de préciser que je me suis intéressé seulement dans la capacité de lire à partir d'un serveur FTP et le répertoire que je précise.J'ai besoin de savoir si le serveur est mort/disparu, je ne suis pas autorisé à lire, etc.

Veuillez noter que, bien que la plupart du temps, je suis de langue agnostique, l'ensemble du site est en PHP, donc une solution PHP qui serait le mieux pour facile de la maintenabilité et de l'extensibilité dans l'avenir.

Était-ce utile?

La solution

Le HTTP fonctionne un peu différemment que le FTP mais malheureusement.Bien que les deux peuvent regarder la même chose dans votre navigateur, HTTP fonctionne de la base de URI (c'est à direpour accéder à Une ressource, vous disposez d'un identifiant qui vous indique comment accéder à que).

FTP est très old school gérés par le serveur.Même le FTP anonyme est un peu un hack, depuis que vous avez toujours fournir un nom d'utilisateur et le mot de passe, c'est simplement défini comme "anonyme" et votre adresse e-mail.

Vérifier si un serveur FTP en place des moyens de vérification

  1. Que vous pouvez vous connecter au serveur FTP

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

  2. Que vous pouvez vous connecter au serveur:

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

  3. Ensuite, si il y a d'autres ressources sous-jacentes que vous avez besoin pour accéder à tester si un site est en place, puis utiliser une appropiate opération sur eux.par exemplesur un fichier, peut-être que l'utilisation ftp_mdtm() pour obtenir l'heure de dernière modification ou sur un répertoire, voir si ftp_nlist() des œuvres.

Autres conseils

Ne serait-il pas plus simple d'utiliser le construit en PHP FTP* fonctionnalité que d'essayer de rouler votre propre?Si l'URI est à venir à partir d'une source à l'extérieur de votre contrôle, vous devez vérifier le protocole de définition (http:// ou ftp://, etc) afin de déterminer les fonctionnalités à utiliser, mais qui est assez banale.Si il est à présent protocole spécifié (il faudrait vraiment!) ensuite, vous pouvez essayer de défaut pour http.

Si vous voulez lire des réponses spécifiques, vous devrez ouvrir un socket et de lire/écrire des données manuellement.

<?php
$sock = fsockopen($hostname, $port);
?>

Ensuite, vous aurez à fput/fread données d'avant en arrière.
Cela va vous obliger à lire sur le protocole FTP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top