Include per HTTP

fredolin

Erfahrenes Mitglied
Hallo Tutorialsgemeinde,

ich entschuldige mich schon mal vorab, wenn eventuell es hier schon sehr oft danachgefragt wurden ist. Auch habe ich hier und über Google.de für mich keine befriedigte Searching-Ergebnisse gefunden.

So nun hier mein Problem:

Auf Webserver a läuft eine Webseite. Webserver a versteht nur PHP kein MySQL
Auf Webserver b laufen PHP ud MySQL.

Webserver A hat aber die URL, die auch aufgerufen wird.

So nun möchte ich Inhalte von der Webseite, die auf Webserver a liegen in Datenbanken packen (Gästebuch,Login,Blog etc)

Laut php.net http://de.php.net/manual/de/function.include.php
sollte das auch so funktionieren wie ich es mir vorstelle.
Aber leider tut es die nicht.

Fehlermeldung: (ist momentan mein localer Webserver, der auf xampp läuft)
PHP:
Warning: include() [function.include]: http:// wrapper is disabled in the server configuration by allow_url_include=0 in F:\webserver\htdocs\www.webservera.local\index.php on line 7

Wie binde ich die Datei ein:
PHP:
include 'http://webserver_b/ordner1/ordner2/ordner3/irgendeinephpdatei.php';

Ich möchte dann auf Webserver A, der ja PHP versteht dann in den PHP-Dateien dann nur die DB insert, updagte, delete etc funktionen ausführen lassen.

Kann mir da jemand helfen?

Freue mich auf Antworten und Danke vorab.

Gruß
Fredolin
 
Solange dir klar ist, dass das unglaublich unperformant ist, du doppelten Traffic erzeugst und durch das Erlauben von allow_url_include mögliche Sicherheitslücken in dein Skript reißt, okay...

Obige Ini Einstellung erlauben, z. B. durch das Ändern der .ini oder durch eine .htaccess - siehe Wie man Konfigurationseinstellungen ändert

Warum du nicht einfach den Hosting Vertrag kündigst, wechselst oder aktualisierst, ist mir allerdings fremd... Oder sogar nur die Domain wechselst.
 
Hallo Felix,

warum ich nicht wechsel, liegt daran, das es nicht meine Domain ist. Der Kunde hat diese Domain kostenlos bei seinen Provider und möchte dies da auch nutzen. Klar habe ich Ihn darauf hingewiesen, das er bei seinem Provider doch ne upgrad machen solle, doch dann kostet es geld und das möchte er nicht.

Somit muss ich nun eine art alternativ finden, wo ich seinen Webspace benutze und dennoch mit MYSQL arbeiten kann.

Hab auch nun schon probiert, in meiner Datei, die zum verbindungsaufbau der Datenbanken benutze, dort die URL anzugeben und alle erforderlichen Parameter.

Fehlermeldung:
PHP:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'http' (11001) in
 
Ich habe da schon alles ausprobiert.

Aber wie ist das mit fopen. Da ich mich damit nicht so auskenne, wäre es eine Möglichleit, per fopen irgendwie die Datei mit den Datenbankverbindungs-Script in das Web zu includieren bzw. so zu öffnen?

Wenn ich im Script für die HErstellung zu MYSQL das so aufschreibe
PHP:
$dom = $_SERVER['http://mywebs.square7.de']; // URL ist auch ohne www

define ("DBNAME","test");
define ("DBSERVER",$dom);
define ("DBUSER","testuser");
define ("DBPASSWD","deinpasswd");

// Datenbank öffnen
function opendb()
{
  $dbhandle=mysql_connect(DBSERVER,DBUSER,DBPASSWD);
  if(!$dbhandle)
    {
      echo "Could not connect to dataserver(1)";
      return (-1);
    }

  $result=mysql_select_db(DBNAME, $dbhandle);
  if(!$result)
    {
      echo "Could not connect to database(2)";
      return(-1);
    }
  return ($dbhandle);
}
bekomme ich nun folgende Fehlermeldung:
PHP:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'testuser'@'localhost' (using password: YES)

Mmmhh liegt irgendwie am Passwort? bzw. doch an der Variable $dom?
 
An der Variable $dom. Die $_SERVER Variable hat da nix zu suchen.

Versuch es mal so:

PHP:
define ("DBNAME","test");
define ("DBSERVER","mywebs.square7.de");
define ("DBUSER","testuser");
define ("DBPASSWD","deinpasswd");

Also komplett ohne $dom

Per [phpf]fopen[/phpf] emulierst du mit HTTP einen HTTP Request, d. h. du kommst nur an die Daten, die das Skript auch ausgibt... Natürlich könntest du hier die Daten serialisiert ([phpf]serialize[/phpf]) ausgeben und dann verarbeiten, aber obige Lösung ist eleganter.
 
so habe ich es probiert, ohne das $dom, doch da bekomme ich dann folgende Fehlermeldung:
PHP:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'http' (11001)

Auch in Google finde ich dafür keine verständliche Hilfe.
 
Hallo!

so habe ich es probiert, ohne das $dom, doch da bekomme ich dann folgende Fehlermeldung:
PHP:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'http' (11001)

Auch in Google finde ich dafür keine verständliche Hilfe.
Das Protokoll (http://) darf halt nicht beim Hostnamen stehen.
Statt dessen ist die Portnumer anzugeben, falls MySQL nicht auf dem Standardport (3306) läuft.
Da bei Dir Apache bereits auf Port 80 (Standardport für http) läuft, bezweifel ich doch sehr dass MySQL auf dem gleichen Port läuft.
Daher sollte als Hostname "mywebs.square7.de:3306" bzw. "mywebs.square7.de" ausreichen (allerdings kenne ich Deine Serverkonfiguration nicht ;)).

Gruss Dr Dau

[edit]
Blöde Frage.....
Aber hast Du schon versucht die Verbindung zur Datenbank von Server A aus vorzunehmen?
Vielleicht hast Du ja Glück und Server B lässt für die Datenbank externe Zugriffe zu.
[/edit]
 
Zuletzt bearbeitet:
Zurück