PHP cURL envoi sur le port 8080
aujourd'hui, je suis en train de faire une boucle appel à unsite qui est à l'écoute sur le port 8080. Toutefois, les appels, comme cela s'est envoyé vers le port 80 et pas 8080 au lieu:
$ch = curl_init();
curl_setopt($ch, CURLOPT_PORT, 8080);
curl_setopt($ch, CURLOPT_URL, 'http://somesite.tld:8080');
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$target_response = curl_exec($ch);
curl_close($ch);
suis-je manqué quelque chose?
- Vous pouvez essayer unsite.tld:8080 comme url.
- qui d'hébergement que vous utilisez?
- orbit.theplanet.com
- maybie les ports sont bloqués?
- je lui ai demandé déjà et m'a dit qu'il était ouvert. btw, s'enroulent demandes par défaut sur le port 80 si le port spécifié est-il verrouillé?
- maybie la page que vous essayez de vous connecter est la vérification de l'agent utilisateur ?
- si le port est bloqué, curl échouera. La distance serveur redirige la demande, essayez de définir CURLOPT_FOLLOWLOCATION à faux puis se reporter à la réponse.
- Et qu'est-ce exactement qui vous fait penser qu'ils sont dirigés sur le port 80 au lieu de le port 8080? Êtes-vous absolument certain que le var vous spécifiez dans CURLOPT_PORT est 8080? Car il doit travailler, soit en réglant le port avec CURLOPT_PORT et à l'aide de l'URL sans numéro de port dans CURLOPT_URL, ou en spécifiant l'URL complète (y compris le port) dans CURLOPT_URL, sans l'aide de CURLOPT_PORT.
- parce que le serveur distant est également en écoute sur le port 80, mais génère une réponse différente. Dire que le port 80 réponses 1 et le port 8080 réponses 0. La réponse je m'attends à ce que est censé être égal à 0, mais à la place je reçois 1er. @kamil & arvin: je vais essayer.
- Pour le débogage de telles questions que vous pourriez ajouter curl_setopt($ch, CURLOPT_VERBOSE, 1) et de voir le debugg info dans le journal des erreurs du serveur web
- stackoverflow.com/questions/1933505/php-curl-problem
Vous devez vous connecter pour publier un commentaire.
Juste une remarque, j'ai eu ce problème avant, parce que l'hébergeur que j'utilisais était le blocage des ports de sortie en dehors de la norme 80 et 443 (HTTPS). De sorte que vous pourriez voulez leur demander ou faire des tests général. En fait, certains hôtes souvent même bloc sortantes sur le port 80 pour plus de sécurité.
Avez-vous essayé de faire un SSH sur le serveur qui exécute ce et de vérifier les règles iptables, et/ou de la tentative de connexion via telnet vers le serveur cible?
sh
telnet somesite.tld 8080
Si rien d'autre, il va vous aider à résoudre votre problème et d'éliminer les problèmes de réseau.
Vérifiez d'abord que vous êtes en mesure de se connecter en utilisant autre chose que PHP est horrible Curl syntaxe:
d'autre regarde à l'aide (pour les utilisateurs de linux)
Une fois que vous avez créé, vous pouvez vous connecter, alors vous pouvez aller de l'horrible affaires de l'utilisation de PHP Curl. Il y a des wrappers, mais ils sont feuilletée que j'ai trouvé.
Les deux Curl, Wget ou similaire peut être très facilement configuré pour utiliser les méthodes GET et POST. Ce n'est pas advisible, mais pour plus d'une opération compliquée à l'aide de Curl, j'ai tout simplement arrêté d'essayer de configurer PHP bibliothèque de l'correctement et simplement supprimés à la ligne de commande.
IL Y A DES IMPLICATIONS EN MATIÈRE DE SÉCURITÉ. Vous devez prendre le plus grand soin pour s'assurer que tout ce que vous lui donner, surtout si c'est à partir d'un formulaire ou d'une source externe, est correctement échappé.
Votre serveur web est configuré de manière incorrecte. Le code que vous avez fourni fonctionne pour moi.
Aussi, votre code peut être plus simple. Il suffit de mettre la URI dans l'init d'appel et à la chute de la
CURLOPT_PORT
etCURLOPT_URL
lignes:$ch = curl_init('http://somesite.tld:8080');
Êtes-vous sûr que le serveur que vous avez l'intention de vous joindre n'est pas derrière un pare-feu? Et que Selinux est désactivé?
Maby vous pouvez utiliser
--local-port [-num]
Définir un numéro préféré ou de la gamme de numéros de port à utiliser pour la connexion(s). Notez que les numéros de port, par nature, sont une ressource rare qui va être occupé à la fois le choix de cette gamme à quelque chose de trop étroite peut causer de la configuration de la connexion des échecs. (Ajouté en 7.15.2)
Source: http://curl.haxx.se/docs/manpage.html#--ftp-pasv
Simple CURL
GET
demande: (Également ajouté json/en-têtes, si nécessaire, pour rendre votre vie plus facile dans le besoin)Exemple
POST
demande:Charset n'est pas obligatoire d'en-tête HTTP et les autres, l'important est Content-Type.
Pour les exemples que j'ai utilisés JSON type MIME, Vous pouvez utiliser ce que vous voulez, jetez un oeil sur le lien:
http://en.wikipedia.org/wiki/Internet_media_type
Assurez-vous que le
php_curl.dll
extension est bien activée sur votre php, et aussi que les ports sont ouverts sur la cible servir.Espère que cette aide.
essayer cette option pour curl
ou d'utiliser ce