Ich bin also irgendwann zum Punkt gekommen, an dem es möglich werden sollte die Artikel online zu editieren. Dazu hab ich in meinem Script eine Funktion, die die Datei des Artikels löscht und dann neu anlegt, mit dem geänderten Text als Inhalt.
Wens interessiert, hier ist der Code (aber daran kanns eigentlich nicht liegen):
- Code: Select all
def ok
cgi=CGI.new("html4")
if File.exist?($textpfad+cgi["datei"].to_s)
File.delete($textpfad+cgi["datei"].to_s)
end
File.open($textpfad+cgi["datei"].to_s, File::CREAT|File::WRONLY) do |datei|
datei.print(cgi.params["text"].to_s)
end
cgi.out{
cgi.html{
cgi.head{cgi.meta("http-equiv"=>"refresh", "content"=>"5; URL=wiki.rb?datei=#{cgi['datei'].to_s}")}+
cgi.body{"rischtisch"+cgi.br+"<a href=\"./wiki.rb\">redirect</a> in 5 sekunden..."+cgi.br+$textpfad+cgi["datei"].to_s}}}
end
Das Problem ist, dass das ganze nicht funktioniert. Apache sagt mir:
[Sat Aug 19 15:01:37 2006] [error] [client 127.0.0.1] Premature end of script headers: edit.rb, referer: http://localhost/cgi-bin/wiki.rb?datei= ... ;edit=true
[Sat Aug 19 15:01:37 2006] [error] [client 127.0.0.1] C:/Programme/Apache Software Foundation/Apache2.2/cgi-bin/edit.rb:18:in `delete': Permission denied - ../htdocs/text/ (Errno::EACCES)\r, referer: http://localhost/cgi-bin/wiki.rb?datei= ... ;edit=true
[Sat Aug 19 15:01:37 2006] [error] [client 127.0.0.1] \tfrom C:/Programme/Apache Software Foundation/Apache2.2/cgi-bin/edit.rb:18:in `ok'\r, referer: http://localhost/cgi-bin/wiki.rb?datei= ... ;edit=true
[Sat Aug 19 15:01:37 2006] [error] [client 127.0.0.1] \tfrom C:/Programme/Apache Software Foundation/Apache2.2/cgi-bin/edit.rb:41\r, referer: http://localhost/cgi-bin/wiki.rb?datei= ... ;edit=true
[Sat Aug 19 15:01:37 2006] [debug] mod_deflate.c(447): [client 127.0.0.1] Zlib: Compressed 0 to 2 : URL /cgi-bin/edit.rb, referer: http://localhost/cgi-bin/wiki.rb?datei= ... ;edit=true
Er meint also irgendwie, dass mein Script nicht die Rechte hat um da Dateien zu löschen. Jedoch hat "Jeder" auf den betreffenden Ordner Vollzugriff. Neue Dateien erstellen geht. Dateien im cgi-bin Ordner löschen geht auch.
Da es ja eigentlich nicht an der Windows Dateisystemgeschichte liegen kann (Jeder darf ja alles) hab ich einen Fehler in meiner Apache Konfiguration vermutet. Deswegen hab ich auch mal nen anderen Server ausprobiert (Xerver), aber da hat er den gleichen Fehler produziert.
Was muss ich tun damit meine Scripts Dateien löschen können?