Filehandle in CGI Skript
|
Seitenanfang |
| Servus, ich beschäftige mich erst seit kurzem mit Perl, bin also noch verdammt unwissend ;) Ich hab folgendes Problem: Ich habe ein CGI Skript geschrieben, welches von einem HTML Formular Daten erhält und diese in eine Textdatei schreiben soll. Leider "ignoriert" das Skript diese Anweisung völlig. Es erstellt nicht einmal die Datei. Von der Syntax her meine ich, ist alles korrekt. Ich bekomme auch keine fehlermeldungen. Das ganze läuft unter Windows, falls das was zur Sache tut. Hier mal ein Auszug von meinem Skript: use CGI qw(param); use Net::SMTP; # Daten aus Formular übernehmen ----------------------- my $author = param("Author"); my $article = param("Article"); my $journal = param("Journal"); my $year = param("Year"); my $volume = param("Volume"); my $pages = param("Pages"); my $name = param("Name"); my $email = param("eMail"); my $comment = param("Comment"); my @params = ($author, $article, $journal, $year, $pages); open(FH,">parameter.txt"); print FH @params; close FH; Ich hoffe mir kann jemand weiterhelfen.
Datum: 29.10.2008-16:19

|
re: Filehandle in CGI Skript
|
Seitenanfang |
| Hallo! Ändere bitte folgende Zeile ab: - open(FH, ">parameter.txt"); + open(FH, ">parameter.txt") or die $!; Damit gibt das Skript eine Fehlermeldung aus, wenn das Öffnen des Filehandles nicht gelingt. Grüße, Skrilax
Datum: 29.10.2008-22:16

|
re: Filehandle in CGI Skript
|
Seitenanfang |
Jetzt erhalte ich den Standard CGI-Fehler, von wegen kein vollständiger HTTP Header. Ich hab in Erfahrung gebracht, dass CGI bei Filehandles sehr empfindlich mit Zugriffsrechten ist. Ich sollte die Textdatei wohl vorher mit "flock" für andere sperren. Allerdings hab ich auch gelesen, dass "flock" in einem Windows Dateisystem nicht funktioniert. Hat jemand eine Idee wie ich das unter Windows hinbekomme?
Datum: 31.10.2008-10:12

|
re: Filehandle in CGI Skript
|
Seitenanfang |
Das Skript wird durch den Fehler offenbar abgebrochen, bevor irgendeine Ausgabe generiert wurde. Ergänze bitte noch ein
use CGI::Carp qw(fatalsToBrowser) Am Anfang des Skriptes. Alternativ reicht auch ein Blick in die error.log des Webservers, wenn du darauf Zugriff hast.
Datum: 31.10.2008-10:27

|
re: Filehandle in CGI Skript
|
Seitenanfang |
Jetzt bekomme ich ein "permission denied". Wieso hat das skript, wenn ich es über den Browser aufrufe, keine Berechtigung?
Datum: 31.10.2008-10:50

|
re: Filehandle in CGI Skript
|
Seitenanfang |
In deinem ersten Posting schriebst du: >> Das ganze läuft unter Windows Meintest du damit, dass a) du das Skript unter Windows zum Laufen bringen willst, oder b) das Skript unter Windows funktioniert, und du jetzt versuchst, das Skript auf einem Linux-Server zum Laufen zu bringen?Im Falle a) kann ich dir leider nicht helfen (schon ewig her, dass ich produktiv ein Windows benutzt habe). Im Falle b): Das Skript läuft aus Sicherheitsgründen mit minimalen Rechten, das schließt auch eine Schreiberlaubnis in den meisten Ordnern aus. Du musst einen Ordner anlegen, der "world-readable" ist. (Rechte auf 666 bzw. 777 o.ä.), in dem das Skript seine Dateien ablegen kann. Dieser sollte irgendwo liegen, von wo aus ein Zugriff von außen über den Webserver nicht möglich ist (also _nicht_ unterhalb der Document-Root, und auch _nicht_ innerhalb des cgi-bin-Ordners). Grüße, Skrilax
Datum: 31.10.2008-21:20

|
re: Filehandle in CGI Skript
|
Seitenanfang |
| Danke, das hat mir schon weitergeholfen! Jetzt habe ich allerdings ein neues Problem. Die erstellte Datei wird von einem 2. Skript per require eingelsen. Dieses scheint allerdings Probleme mit Leerzeichen zu haben. Z.B. habe ich auf meinem HTML Formular ja ein Eingabefeld für den Namen. Wenn jemand jetzt Vor- und Nachname einträgt sind diese natürlich durch ein Leerzeichen getrennt. Das 2. skript, welches diese Daten eigentlich verarbeiten soll, schmiert mir jedesmal ab, wenn Leerzeichen enthalten sind. Sorry, wenn ich nerve :)
Datum: 05.11.2008-12:38

|
re: Filehandle in CGI Skript
|
Seitenanfang |
OK, Kommando zurück. Das mit den Leerzeiche hab ich jetzt hinbekommen. Aber ich komm schon wieder nicht weiter. Beim anderen Skript kommt scheinbar nichts an. Wenn ich dort die Variablen ausgeben möchte erscheint einfach ein leeres Feld. Obwohl die Werte in die Datei geschrieben werden.
Datum: 05.11.2008-14:01

|
re: Filehandle in CGI Skript
|
Seitenanfang |
| Also ohne etwas Quellcode kann man dir beim besten Willen nicht weiter helfen. Wie sieht diese erstellte Datei aus? Wie versuchst du, diese einzulesen und weiter zu verarbeiten?
Datum: 05.11.2008-23:07

|
re: Filehandle in CGI Skript
|
Seitenanfang |
Habs über "param" hinbekommen. Das mit der Datei hätte ich zwar irgendwie "cooler" gefunden, aber Hauptsache es geht :) Trotzdem Danke für die Hilfe!Grüße Herbs
Datum: 07.11.2008-10:56

|