Homepage selbermachen 7.852 Themen, 35.619 Beiträge

Probleme PHP - MySQL unter W2k

tw-gr / 5 Antworten / Baumansicht Nickles

Mein System: W2k-Server, PHP 4.1.0, Mysql 3.23.42, Apache 1.3
Es läuft soweit schon einmal, aber ein Problem kann ich nicht lösen. Bei verschiedenen Skripten kann ich DB-Inhalte lesen, aber keine einfügen. Der entsprechende User hat die zugehörigen Rechte für die DB (versuchsweise sogar alle - ist nur ein Testserver!). Über phpMyadmin funktioniert es. Andere Skripte, die Inhalte in textdateien ablegen - gleiches Problem: lesen geht, aber kein schreiben. Fehlermeldungen werden keine ausgegeben, obwohl die entsprechenden Tests eingebaut sind. Ach ja, die Skripte sollten funktionieren, da u. a. in PC kreativ (Th. Wölfer) veröffentlicht.

An welcher Schraube muss man da drehen? Für einen Tipp wäre ich dankbar!

Gruss Torsten

bei Antwort benachrichtigen
xafford tw-gr „Probleme PHP - MySQL unter W2k“
Optionen

läuft php als modul oder als cgi unter apache? unter welchen rechten läuft apache und php? eventuell sind es nicht die rechte des users, die ein schreiben unterbinden, sondern die rechte des zugreifenden tasks. versuchsweise solltest du mal die ntfsrechte für dein webroot und die mySQL-dateien auf ALLE-Vollzugriff setzen, nur um zu testen, ob das die fehlerquelle ist.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
tw-gr xafford „läuft php als modul oder als cgi unter apache? unter welchen rechten läuft...“
Optionen

es läuft als Modul, Apache und PHP haben auch alle Rechte, der User auch (ist nur ein testserver, also offen wie ein scheunentor).

Ich weiß nicht, ob ich damit wieder falsch liege, aber ich habe einen Verdacht. Die Formularvariablen sind beim Aufruf des Skriptes ohne Wert (zumindest bringt ein print $text keine Ausgabe. Und das sollte eigentlich funktionieren, da das Sript nicht selbstgestrickt ist, sondern nur zum Lernen genutzt werden sollte. Bei Bedarf kann ich es ja mal posten - oder hat jemenad so schon einen Tipp?

Ziemlich ratlos - Torsten

bei Antwort benachrichtigen
xafford tw-gr „Probleme PHP - MySQL unter W2k“
Optionen

ohne zu wissen, wie das formular und das script aussieht kann man schwer was sagen. mach doch einfach mal am anfang der betroffenen scripte eine ausgabe aller variablen, die mittels get oder post übermittelt werden, je nachdem was du nutzt, ich tippe ja mal auf post, ansonsten würdest du die variablen ja schon in der logdatei nachsehen können.
also am anfang vom script:
foreach($HTTP_POST_VARS as $var=>$value){
if(!is_array($var)){print("$var = $value
");}
else{
foreach($vars as $s_var=>$s_value){print("$s_var = $s_value
");}
}
}
wenn die variablen als leere strings auftauchen, dann stimmt etwas an der übergabe der variablen nicht, dann würde ich mal die formulare und scripte posten für eine überprüfung.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
tw-gr xafford „ohne zu wissen, wie das formular und das script aussieht kann man schwer was...“
Optionen

Hallo, ich habe deine Zeilen ausprobiert. Alle Variablen (mittels get geholt) werden angezeigt. Ich hänge mal das Skript in gekürzter Fassung an:
// hier stehen die Festlegungen für $DB_xxx
Formular ausgeben
// function DoForm() mit entsprechenden print-Befehlen
form action=gaestebuch.php // die Datei selbst wieder
input type=text name=titel width=40
textarea name=text cols=40 rows=5
input type=hidden name=cmd value=enter
input type=submit value=Eintragen
//
Eintragen eines neuen Datensatzes in die MySQL Datenbank.
//function InsertData( $titel, $text)
//{
// global $DB_NAME;
// global $DB_USERNAME;
// global $DB_PASSWORD;
// global $DB_TABLE_NAME;
// global $DB_SERVER;
// $c = mysql_connect( $DB_SERVER, $DB_USERNAME, $DB_PASSWORD);
// $s = "insert into $DB_TABLE_NAME ( datum, title, text) values( NOW(), '$titel', '$text')";
// mysql_select_db($DB_NAME);
// $r = mysql_query($s, $c);
// if( ! $r) print "Fehler: $s
";
//}

// Inhalt anzeigen
//function ListContent()
//funktioniert tadellos


// hauptprogramm --------------------------------------------------
Kopfzeilen ausgeben, dann:
// DoForm();
// if (IsSet ( $cmd ) ) InsertData( $titel, $text);
// ListContent();
// ..
//?>

listcontent funktioniert prima, ist deshalb raus.
Wenn ich am Ende ändere in
//if (! isset($cmd)) Insertdata ( "text1", "text2");
dann wird der auch komplett eingetragen - sonst sind die Datensätze leider leer (außer der Zeit und ID-Nr).

Mittlerweile komplett ratlos - typisches Anfängerstadium :-((

In der Hoffnung auf weitere Hilfe

Gruss Torsten

PS: Wie bekomme ich in diesem Forum hin, dass php-Befehle nicht gleich interpretiert werden sondern als "normaler" Text angezeigt werden?

bei Antwort benachrichtigen
tw-gr Nachtrag zu: „Probleme PHP - MySQL unter W2k“
Optionen

Danke für's mitdenken, aber es war meine eigene Dummheit:
Ab Version 4.1.x ist ein anderes Verarbeitungsmodell für Eingaben implementiert. In der .ini hilft dann erst einmal
register_globals = On
- oder Skript umschreiben.

bei Antwort benachrichtigen