Fritz Thomas

27 Jan, 2008

PHP: “No Input File Specified” Error

Posted by: Fritz Thomas In: PHP

Der Fehler tritt unter anderem bei Installationen auf bei denen PHP als CGI oder FastCGI eingerichtet ist. Und zwar dann wenn man mittels mod_rewrite versucht auf eine Datei weiterzuleiten die “nicht existiert”. Bei CGI Installation von PHP bedeutet das folgendes: Wird eine URL folgendermasßen rewritten:

RewriteEngine On
 
RewriteRule ^(.*)$ index.php/$1

Also um zum Beispiel ‘/archive/2007/01′ auf ‘index.php/archive/2007/01′ zu rewriten dann tritt der Fehler auf, weil aus der Sicht von PHP die Datei ‘/index.php/archive/2007/01′ nicht existiert.

Nachtrag

Der Fehler tritt auch dann unter einer CGI Installation auf wenn man in der php.ini die Option doc_root auf eine nicht vorhandenes oder nicht lesbares Verzeichnis gesetzt hat.

Wie kann der Fehler behoben oder umgangen werden?


In solchen Scripts wird die URL dann meist über die $_SERVER['PATH_INFO'] Variable ausgewertet.
Das sollte allerdings vermieden werden, da diese Variable nicht unter allen PHP Umgebungen gleich gesetzt wird, oder gar nicht gesetzt wird. Statt dessen sollte man die angeforderte URL über die $_SERVER['REQUEST_URI'] Variable auslesen. Ändert man die entsprechende Stellen im Script, kann man auch die RewriteRules folgenderma&szlig ändern:

RewriteEngine On
 
RewriteRule ^(.*)$ index.php


Wie Ihr seht wird so nicht die URL an die index.php angehängt sondern bei jedem Request nur die index.php aufgerufen. Die angeforderte URL kann aber aus der $_SERVER['REQUEST_URI'] ausgelesen werden. Ändert man diese Stellen so funktioniert der Request funktioniert und man bekommt keinen “No input file specified” Fehler zurück.

  • Digg
  • del.icio.us
  • description
  • MisterWong
  • Reddit
  • Slashdot
  • Technorati
  • YahooMyWeb
  • Fark
  • Google

No Responses to "PHP: “No Input File Specified” Error"

Comment Form

About

This is my Blog about PHP the Zend Framework, JavaScript, Net Culture and all other stuff which is interesting to me.

Latest Tweets