Pár týdnů mi tu nefungovalo komentování článků. Souviselo to zřejmě s přesunem serveru z Windows na Linux, protože se problém objevil zhruba současně s tímto přesunem.
Ve snaze vyřešit jej elegantně, nainstaloval jsem nový Wordpress. Chvíli to ještě asi potrvá, než se mi bude chtít piplat se s nahozením obvyklého designu. Bohužel, zmíněný problém tím vyřešen nebyl.
Inu pustil jsem se do analýzy a zjistil, že formulář posílaný pomocí metody POST dorazí na server (resp. ke skriptu, který ho zpracovává) s proměnnou prostředí REQUEST_METHOD nastavenou na GET a všemi obvyklými vstupními poli ($_GET, $_POST, $_REQUEST) prázdnými. Wordpress v nové verzi už měl tento stav dokonce ošetřený a posílal HTTP chybu 405 (method not allowed).
Dopátral jsem se, že by to mohlo být způsobeno typicky zpracováním skriptu jako obyčejný text, ale ostatní php skripty fungují v pohodě a stav se nezměnil, i když jsem v .htaccess explicitně vynutil skriptové zpracování pro dotyčný soubor. Nakonec jsem zjistil, že většina formulářů třeba v adminu Wordpressu funguje dobře. Metodou pokusu a omylu jsem došel ke zjištění, že fungují jen formuláře s vyplněnou akcí ve stylu action=“soubor.php“, nikoliv action=“http://hansuv.net/soubor.php“.
Na problém jsem tedy zatím aplikoval pouze jakýsi work-around (změna akce problémového formuláře); pokud někdo tuší, které nastavení Apache by mohlo zmíněný problém řešit, dejte mi prosím vědět.
Kdyby byly další problémy s komentáři, napište to do komentářů.
Jen strilim od boku, ale neni v php.ini nastaveno safe_mode=on ?
Komentář od Kumpa — 6. 8. 2007 @ 14:03
Není. Ale i kdyby bylo, už dlouho programuju safe_mode=on-solid kód
Nastavení safe-mode na on neovlivní práci s proměnnými v poli $_POST. Navíc, některé formuláře fungovaly v pohodě.
Komentář od Hans — 6. 8. 2007 @ 14:17