summaryrefslogtreecommitdiff
path: root/doc/bugs/CGI_problem_with_some_webservers.mdwn
blob: 32ec5cca171417aa3713e0e196519ddc600eefd5 (plain)

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]]