Kohana 3 mod_rewrite i błąd „No input file specified”

Podziel się z innymi!

    Stawiałem już projekty oparte na frameworku Kohana 3 na różnych serwerach. Jak dotąd zawsze działał mi plik .htaccess o treści:

    # Turn on URL rewriting
    RewriteEngine On
     
    # Installation directory
    RewriteBase /
     
    # Protect application and system files from being viewed
    RewriteRule ^(?:application|modules|system)\b - [F,L]
     
    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
     
    # Rewrite all other URLs to index.php/URL
    RewriteRule .* index.php/$0 [PT]

    (No ok mój plik htaccess jest bardziej robudowany, ale dla przejrzystości problemu podaję wersję minimalną – standardzik.)

    Dzisiaj jednak szybkie i przyjemne przerzucenie projektu na serwer docelowy zostało brutalnie zburzone przez niemiły komunikat „No input file specified”, który pokazywał mi się przy próbie przejścia na dowolną podstronę.

    Początkowo próbowałem użyć dyrektywy .htaccess-a

    Options -MultiViews

    Przy jakimś projekcie to mi kiedyś pomogło o ile dobrze kojarzę, ale tym razem nie.

    Problematyczna okazała się linijka:

    RewriteRule .* index.php/$0 [PT]

    , którą na wszelkich forach, blogach itd. proponowano zastąpić na kilka różnych sposobów

    RewriteRule .* index.php?$0 [PT,L,QSA]

    albo

    RewriteRule .* index.php [L]

    jednemu podobno zadziałało coś takiego

    RewriteRule .* index.php?kohana_uri=$0 [PT,L,QSA]

    Mnie zadziałało dowolne z powyższych rozwiązań, ale tylko połowicznie. To znaczy – komunikat błędu zniknął, ale za to bez względu na wybraną podstronę zawsze pokazywała mi się strona główna. Nienawidzę takich zagadek.

    Przeanalizowałem zawartość tablicy $_SERVER na moim serwerze testowym oraz produkcyjnym i wyszło mi, że na tym drugim brakuje PATH_INFO. Widać routing Kohany (przynajmniej w wersji 3.0) korzysta z tej wartości i bez niej zwyczajnie przestaje działać.

    Ostatecznym remedium na mój kłopot okazało się prostackie obejście

    $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];

    Ja osobiście dodałem to w bootstrapie.

    Podziel się z innymi!

      Parse error: syntax error, unexpected '[', expecting ')' in /home/bigweb/public_html/heintze/blog/wp-content/themes/fanoe/comments.php on line 49