Comment Résoudre [Warning: fsockopen(): unable to connect]?
Je veux vérifier que mon serveur Ubuntu Server 14.04 LTS est en ligne ou pas à mon serveur d'hébergement mutualisé. Mon serveur IP a pas de domaine mais mon hébergement mutualisé serveur de domaine. Pour cela j'ai utilisé le code ci-dessous dans mon hébergement mutualisé serveur pour vérifier que mon serveur est en ligne ou pas.
<?php
$site = "XX.XX.XX.XX";
$port = 7550;
$fp = fsockopen($site,$port,$errno,$errstr,10);
if ($fp === false) {
print($errno." : ".$errstr);
}
if(!$fp)
{
echo "SERVER IS DOWN";
}
else
{
echo "SERVER IS UP ON PORT ".$port." AT ".$site;
fclose($fp);
}
?>
Après l'ajout du code ci-dessus dans mon hébergement mutualisé serveur de fichier php, quand je le lance puis j'ai eu l'erreur ci-dessous.
Warning: fsockopen(): unable to connect to XX.XX.XX.XX:7550 (Connection timed out) in /home/USERNAME/public_html/index.php on line 4 110 : Connection timed out SERVER IS DOWN
Maintenant quelqu'un me dire de vérifier que allow_url_fopen = On
est de tourner sur mon serveur mutualisé ou non, puis j'ai vérifié mon serveur mutualisé php.ini
fichier et là, c'est de tourner sur.
Maintenant que j'ai été à la recherche pour aider tout autour de quelqu'un d'autre m'a dit de vérifier à la fois(mon serveur d'hébergement mutualisé et de mon serveur) ont fsockopen()
ou pas. Ensuite, j'ai écrit le code ci-dessous dans un fichier php et de les exécuter sur les deux serveurs.
<?php
$fp = fsockopen ("localhost", 80, $errno, $errstr, 10);
if (!$fp) {
echo "$errstr ($errno)
\n";
}else
{
echo "fsockopen Is Working Perfectly.";
}
fclose ($fp);
?>
Après l'exécution de la ci-dessus .fichier php sur les deux serveurs, puis j'ai obtenu le résultat ci-dessous mêmes sur les deux serveur.
fsockopen Is Working Perfectly.
Remarque importante: il faut Garder à l'esprit que mon IP du serveur de rester actif en tant que je suis en utilisant de nombreux PC sur IP, mais mon serveur est éteint. Aussi, je suis en mesure d'ouvrir http://XX.XX.XX.XX:7550
dans mon Navigateur Web en utilisant un proxy.
Connection timed out
généralement des points à un pare-feu ou une réponse de la distance que prend trop de temps.- Êtes-vous sûr que votre pare-feu correctement transmis le port tcp 7550 sur le serveur cible? Parce que généralement, un serveur web est en cours d'exécution dans le port 80 qui est ouvert, bien sûr ouvert si vous pouvez entrer dans les sites web.
- Je suis en mesure d'ouvrir
http://XX.XX.XX.XX:7550
dans mon Navigateur Web en utilisant un proxy. - Je sais quel est le sens de
Connection timed out
mais je l'ai ouverthttp://XX.XX.XX.XX:7550
sur proxy puis il prend seulement 1 sec pour ouvrir dans le navigateur. - Si vous voulez réseau de communication avec des fonctionnalités avancées, utilisez
socket_create
au lieu defsockopen
. - Je suis un newbie dans ce domaine. Pouvez-vous partager le code entier dans la réponse. Je suis au-dessus de tous les codes en question à partir d'internet.
- Je ne suis pas payé codant pour stackoverflow questions. Vous devriez lire la documentation et apprendre de lui.
- Merci pour votre temps pour mentionner le lien.
Vous devez vous connecter pour publier un commentaire.
Parce que
fsockopen
jette unE_WARNING
exception si le nom d'hôte n'est pas un domaine valide. Donc, vous utilisez une IP avec un PORT hors ligne alors la fonction renvoie une exception.Vous pouvez résoudre avec la poignée de l'exception ou de @:
Si vous pensez que vous PORT est en ligne, vérifiez le pare-feu et après vérification avec une ressource externe comme http://www.yougetsignal.com/tools/open-ports/.
Lire http://php.net/manual/es/function.fsockopen.php.
Mise à JOUR:
Vous pouvez le tester avec
socket_create
, c'est mieux quefosockopen
.Vous devez définir un protocole valide, voir: http://php.net/manual/es/function.socket-create.php.
@
. Si vous manipulez exception, alors vous aurez besoin de laif
état ettry, catch
. Lire php.net/manual/es/function.fsockopen.php. Afficher les erreurs dans un environnement de production est mauvais.http://XX.XX.XX.XX:7550
dans mon Navigateur Web en utilisant le proxy et aussi votre lien montre que mon7550
port est ouvert.$fp = @fsockopen($site,$port,$errno,$errstr,10);
puis j'ai eu110 : Connection timed out SERVER IS DOWN
... 🙁fsockopen
) Avez-vous testé avecsocket_create
?socket_create
méthode.OFFLINE: Connection timed out
encore mon serveur est sur et de travail dans le navigateur...SOL_UDP
au lieu deSOL_TCP
en vous fournis le code de réponse, j'ai euOFFLINE: Success
texte après avoir exécuté le fichier PHP sur mon serveur mutualisé même mon Ubuntu Server 14.04 LTS est en ligne.socket_create
les types et les protocoles. J'espère que j'ai aidé un peu.ZTE ZXDSL 831CII
routeur. J'ai fait de ces paramètres sur mon routeur pour ouvrir le port externe et l'envoyer. goo.gl/0N8l96 goo.gl/PkCfjS goo.gl/mxov5ahttp://XX.XX.XX.XX:7550
de tout le monde, sans VPN, donc ça veut dire que le mes ports sont ouverts et connexion entrante sont autorisés. (D'une Voix de moi pour essayer de m'aider)Si vous écrasait le gestionnaire d'erreur avec
set_error_handler()
vous devez vérifier sierror_reporting()
retourne 0, ce qui signifie un @ a été utilisé pour supprimer les erreurs.