php.ini und .htaccess verhindern Zugriff auf MySQL-DB
am 25.07.2010 - 15:42 Uhr in
Hallo,
um bei meinem Provider (1&1) Drupal laufen zu lassen, mußte ich eine php.ini im Drupal-Verzeichnis anlegen mit diesem Inhalt:
register_globals = off
memory_limit = 64Msowie in die .htaccess die Zeile
AddType x-mapp-php5 .phphinzufügen.
Dies verhindert allerdings, daß ich im Drupal-Verzeichnis mit PHP auf eine MySQL-DB zugreifen kann. Dabei handelt es sich nicht um die DB, auf der Drupal läuft, sondern um eine "gleichwertige" bei 1&1 gehostete MySQL-DB. In der DB sind z.B. Kundendaten, die ich in der Webseite verarbeiten möchte. Auf die DB greife ich normalerweise (problemlos!) über folgenden code zu:
$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);
...
mysql_close($db);Bette ich diesen Code jedoch in Drupal ein (Eingabeformat = PHP Code) oder rufe ihn über eine separarte PHP-Datei dbtest.php im Durpalverzeichnis auf, bekomme ich folgende Fehlermeldung:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'userxy@123.45.67.89' (Using password: YES) ...Das DB-Zugriff klappt erst dann, wenn ich die php.ini lösche und AddType x-mapp-php5 .php aus der .htaccess entferne. Wenn ich das tue, kann ich aber Drupal nicht mehr verwenden.
Kann mir jemand weiterhelfen? Danke im voraus
Heinz
- Anmelden oder Registrieren um Kommentare zu schreiben

Füge doch die Tabellen mit
am 25.07.2010 - 16:33 Uhr
Füge doch die Tabellen mit den Kundendaten einfach in die Drupal-Datenbank mit ein, dann kannst du darauf ganz einfach über die schönen Datenbank-Funktionen von Drupal zugreifen.
Das löst leider das Problem
am 25.07.2010 - 16:49 Uhr
Das löst leider das Problem nicht, die Datenbanken müssen schon getrennt sein.
Und warum?
am 25.07.2010 - 16:54 Uhr
Und warum?
Ansonsten kannst du auch
am 25.07.2010 - 18:10 Uhr
Ansonsten kannst du auch versuchen, eine Alternativ-Datenbank in die settings.php einzutragen.
Dann schaltest du in einem Script die DB um, machst damit deine Abfragen und schaltest wieder zurück.
Siehe hier:
http://xplus3.net/2009/11/05/connect-to-multiple-databases-from-drupal/
Ich habe mal deinen Rat
am 25.07.2010 - 19:24 Uhr
Ich habe mal deinen Rat befolgt und stellvertretend für die separate Kundendatenbank eine Tabelle "kunde" in der Drupal-DB erstellt. Dann folgenden Code in den Textkörper:
$query = "SELECT * FROM kunde";$result = mysql_query($query);
Als Fehlermeldung erscheint:
warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) in /.../drupal/includes/common.inc(1699) : eval()'d code on line 5.warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /.../drupal/includes/common.inc(1699) : eval()'d code on line 5.
Wenn du von "den schönen Datenbank-Funktionen" sprichst, weiß ich leider nicht genau, was du meinst (sorry, Drupal-Anfänger)
Danke im voraus.
Heinz
In Drupal solltest du nicht
am 25.07.2010 - 20:00 Uhr
In Drupal solltest du nicht die normalen mysql-Funktionen von PHP verwenden, sondern lieber die Funktionen der Drupal-Datenbankschicht.
Hauptsächlich diese beiden:
db_query
db_result
Und mit db_fetch_object liest man dann die Ergebniszeilen aus
Dein Beispiel wäre also wenn dann so:
<?php$sql = "SELECT * FROM kunde;";
$result = db_query($sql);
?>
Die ganzen Funktionen kann man hier nachlesen:
Database abstraction layer
Durch die normale Funktion mysql_query wird diese Schicht nicht durchlaufen und somit sind auch keine Datenbank-Verbindungsdaten verfügbar.
Warum willst du die Abfragen eigentlich direkt im Node machen? Was genau hast du denn vor?
Hast du die Variante mit einer alternativen DB in der settings.php schon probiert?
Danke, jetzt kommt zumindest
am 25.07.2010 - 20:19 Uhr
Danke, jetzt kommt zumindest schon mal keine Fehlermeldung mehr :-)
Das mit der alternativen DB habe ich noch nicht getestet.
Ich habe eine kleine Adreßdatenbank, deren Inhalte bisher an verschiedenen Stellen der (alten) Webseite verarbeitet und ausgegeben werden. Eigentlich hatte ich vor, diese Daten exakt so auch wieder in der (zukünfitgen) Drupal-Webseite hervorzuholen, da dadran kein Änderungsbedarf besteht. Ist das so ungewöhnlich, das direkt in den Nodes zu machen? Mir ist jetzt noch nichts anderes untergekommen.
Naja, ungewöhnlich nicht,
am 25.07.2010 - 20:39 Uhr
Naja, ungewöhnlich nicht, aber meist wird geraten, PHP-Code direkt im Node-Body eher als letztes Mittel einzusetzen. Sinnvoller wäre es evtl. das ganze über die node.tpl.php zu regeln oder über ein eigenes Modul o.Ä.