So legen Sie den Hostnamen mit PHP Curl für eine bestimmte IP fest

Lesezeit: 3 Minuten

Benutzer-Avatar
Vishesh Joshi

Hallo, ich habe einen Server, auf dem mehrere virtuelle Hosts eingerichtet sind.

Ich wollte mit PHP eine Curl-Anfrage an die IP dieses Servers stellen. Außerdem wollte ich diese Anfrage an einen bestimmten Hostnamen auf der IP des Servers stellen.

Gibt es eine Möglichkeit, es zu tun?

Ein bisschen mehr Ausarbeitung: Ich möchte eine Curl-Anfrage zwischen meinen Servern über das interne LAN unter Verwendung ihrer internen IP stellen. Das Problem ist, dass ich mehrere Websites auf diesem Server gehostet habe. Wenn ich also eine Curl-Anfrage an die interne IP des Servers mache … etwas wie (curl_init (xxx.xxx.xxx.xxx)), möchte ich in der Lage sein, Apache anzuweisen, zu einem bestimmten Ordner zu gehen, auf den a verweist virtueller Host. Ich hoffe, das hat die Frage etwas klarer gemacht. – Vishesh Joshi vor 3 Minuten bearbeiten

  • Sie möchten Ihre IP mit Curl anders darstellen?

    – Safarow

    29. März 2012 um 20:06 Uhr

  • Wenn es sich um einen Hostnamen handelt, der von einem Webserver gehostet wird, können Sie einfach “the_hostname.domain” verwenden und es sollte funktionieren, es sei denn, es handelt sich um einen lokalen Hostnamen und Sie kommen von außerhalb des Netzwerks, dann müssten Sie diese Domain zur Standarddomain auf dieser IP machen Sie können also stattdessen die IP verwenden. Aber ich bin mir nicht ganz klar, ob es das ist, was du ansiehst

    – Preis

    29. März 2012 um 20:06 Uhr

  • Ich möchte eine Curl-Anfrage zwischen meinen Servern über das interne LAN unter Verwendung ihrer internen IP stellen. Das Problem ist, dass ich mehrere Websites auf diesem Server gehostet habe. Wenn ich also eine Curl-Anfrage an die interne IP des Servers mache … etwas wie (curl_init (xxx.xxx.xxx.xxx)), möchte ich in der Lage sein, Apache anzuweisen, zu einem bestimmten Ordner zu gehen, auf den a verweist virtueller Host. Ich hoffe das hat die Frage etwas klarer gemacht..

    – Vishesh Joshi

    29. März 2012 um 20:11 Uhr

  • Befehlszeilen-Curl: stackoverflow.com/q/3390549/367456

    – hakre

    26. August 2015 um 9:13 Uhr

Sie können den Host-Header in der Curl-Anfrage festlegen:

<?php
$ch = curl_init('XXX.XXX.XXX.XXX');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);

  • Danke Leigh. Ich habe das gerade gemacht und es hat funktioniert. Ich wollte gerade die gleiche Antwort posten 🙂 danke.

    – Vishesh Joshi

    29. März 2012 um 20:40 Uhr

  • Dies hat bei mir nicht funktioniert, da das vorgelegte SSL-Zertifikat nicht übereinstimmte. CURLOPT_RESOLVE unten funktioniert – aber für Dinge wie Let’s Encrypt, wenn es nicht im DNS ist, kann es ein Problem sein, es zu erneuern.

    – GreenReaper

    13. März 2020 um 13:30 Uhr

Benutzer-Avatar
sanmai

Für HTTPS-Sites verwenden CURLOPT_RESOLVE die in jeder PHP-Version vorhanden ist seit PHP 5.5.

<?php
$ch = curl_init('https://www.example.com/');
// note: array used here
curl_setopt($ch, CURLOPT_RESOLVE, array(
    "www.example.com:443:172.16.1.1",
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);

Beispielausgabe:

* Added www.example.com:443:172.16.1.1 to DNS cache
* Hostname www.example.com was found in DNS cache
*   Trying 172.16.1.1...

  • Beachten Sie, dass diese Funktion zwar in PHP 5.5 implementiert ist, aber noch nicht in der PHP-Dokumentation dokumentiert ist. Dies ist jedoch die richtige und einzige Lösung, damit SSL-Zertifikate funktionieren. Im Moment kann zusätzliche Dokumentation im CURL-Handbuch gelesen werden unter: curl.haxx.se/libcurl/c/CURLOPT_RESOLVE.html

    – Riimu

    29. Januar 2016 um 8:21 Uhr

  • Du bist toll! Danke vielmals! stackoverflow.com/questions/47940730/…

    – jahrhundertelang

    9. Januar 2018 um 11:57 Uhr

Basierend auf Leigh Simpson, es funktioniert, aber ich muss eine Abfragezeichenfolge anhängen. Damit arbeite ich um:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xxx.xxx.xxx.xxx/index.php?page=api&action=getdifficulty");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
?>

  • Sie benötigen einen Pfad in der URL: Nur die Host-IP reicht nicht aus. Daher sollten Sie curl_setopt($ch, CURLOPT_URL, “xxx.xxx.xxx.xxx/”);

    – Cerno

    21. September 2016 um 14:30 Uhr

1282300cookie-checkSo legen Sie den Hostnamen mit PHP Curl für eine bestimmte IP fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy