aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/CGI_problem_with_some_webservers.mdwn
blob: e4b0fd4482da3fd33fa52af82b1b2e18b943784c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
The "ikwiki.cgi?page=index&do=edit" function has a problem
when running with [[!debpkg thttpd]] or [[!debpkg mini-httpd]]:
for some reason the headers ikiwiki outputs are transmitted
as the page content. Surprisingly, the "do=prefs" function
works as expected.

Here is what it looks like in iceweasel:

    Set-Cookie: ikiwiki_session_apnkit=99dad8d796bc6c819523649ef25ea447; path=/
    Date: Tue, 14 Aug 2007 17:16:32 GMT
    Content-Type: text/html; charset=utf-8
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    (...)

Ikiwiki runs fine with [[!debpkg boa]].

--[[JeremieKoenig]]

It doesn't work for signin either.
What is the reason for these "header => 1" in FormBuilder initialisations?
Why do they appear two times with conflicting values in the very same hashes?

--[[JeremieKoenig]]

> Clearly those duplicate header settings are a mistake. But in all cases, the
> `header => 0` came second, so it _should_ override the other value and
> can't be causing this problem. (cgi_signin only sets it to 0, too).
> 
> What version of formbuilder are you using? If you run ikiwiki.cgi at the
> command line, do you actually see duplicate headers? I don't:

	joey@kodama:~/html>REQUEST_METHOD=GET QUERY_STRING="page=index&do=edit" ./ikiwiki.cgi
	Set-Cookie: ikiwiki_session_joey=41a847ac9c31574c1e8f5c6081c74d12; path=/
	Date: Tue, 14 Aug 2007 18:04:06 GMT
	Content-Type: text/html; charset=utf-8
	
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

> Do thttpd and mini-httpd perhaps not realize that Set-Cookis is the start of
> the headers? --[[Joey]]

>> Thanks for your help: I think I found the problem!
>> Ikiwiki outputs (in my case) the following
>> error message on stderr, followed by an empty line:

    /srv/ikiwiki/wc/index.mdwn:  (Not a versioned resource)

>> Probably thttpd and mini-httpd read stderr as well as stdout, while apache
>> and boa don't. When using a shell-script wrapper as the CGI,
>> which redirects ikiwiki's error output to /dev/null, it works better.

>> The edit still fails to commit, because in my wiki, index.mdwn is
>> pulled from the base wiki and somehow ikiwiki wants to change it
>> rather that create it.

>> --[[JeremieKoenig]]

>>> If thttpd and mini-httpd interpret CGI's stderr as stdout, then
>>> they're not properly following the CGI spec, and will break with tons
>>> of cgi scripts besides ikiwiki. And of course there are many many cases
>>> where ikiwiki might output to stderr, and that's the right thing to do.
>>> So I don't see any way to address this in ikiwiki. --[[Joey]]

>>>> (reported as [[!debbug 437927]] and [[!debbug 437932]]) --[[JeremieKoenig]]

Marking [[done]] since it's not really an ikiwiki bug. --[[Joey]]

----

I'm using boa and getting some odd behaviour if I don't set the `umask`
option in the config file.  Editing a page through the web interface and
hitting "Save Page" regenerates the `index.html` file with no world-read
permissions.  As a result, the server serves a "403 - Forbidden" error page
instead of the page I was expecting to return to.

There are only two ways I found to work around this: adding a `umask 022`
option to the config file, or re-compiling the wiki from the command line
using `ikiwiki --setup`.  Setting up a git back-end and re-running `ikiwiki
--setup` from inside a hook had no effect; it needed to be at the terminal.
--Paul

> Since others seem to have gotten ikiwiki working with boa, 
> I'm guessing that this is not a generic problem with boa, but that
> your boa was started from a shell that had an unusual umask and inherited
> that. --[[Joey]] 

>> That's right; once I'd worked out what was wrong, it was clear that any
>> webserver should have been refusing to serve the page.  I agree about the
>> inherited umask; I hadn't expected that.  Even if it's unusual, though, it
>> probably won't be uncommon - this was a stock Ubuntu 9.04 install.  --Paul

(I'm new to wiki etiquette - would it be more polite to leave these details
on the wiki, or to remove them and only leave a short summary?  Thanks.
--Paul)

> Well, I just try to keep things understandable and clear, whether than
> means deleting bad old data or not. That said, this page is a bug report,
> that was already closed. It's generally better to open a new bug report
> rather than edit an old closed one. --[[Joey]] 
                                      
>> Thanks for the feedback, I've tidied up my comment accordingly.  I see
>> your point about the bug; sorry for cluttering the page up.  I doubt it's
>> worth opening a new page at this stage, but will do so if there's a next
>> time.  The solution seems worth leaving, though, in case anyone else in my
>> situation picks it up.  --Paul