Lokaler Webserver - "No input file specified"

  • PHP

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Lokaler Webserver - "No input file specified"

    Moin,

    ich habe einen lokalen Webserver nach diesem Source hier erstellt. Ich habe den Code etwas verbessert, da er die Naming Guidelines nicht wirklich einhielt, aber gut.
    Soweit klappt alles gut, der Server läuft auf 127.0.0.1:5000 ohne große Probleme.

    Die Serverkonfiguration ist fertig konfiguriert und passt soweit. Alle Dateien im angegebenen Verzeichnis werden korrekt angezeigt, nur die PHP-Dateien machen Probleme. Da ich ja einen Interpreter brauche, habe ich PHP von hier geladen: windows.php.net/downloads/rele…5.5.17-Win32-VC11-x86.zip

    Die PHPs werden erkannt, aber bei der Ausführung gibt es ein Problem.
    Die Ausgabe lautet immer, egal bei welchem Skript, No input file specified. Ich konnte in Erfahrung bringen, dass es etwas mit der php-cgi.exe zu tun hat, aber was genau, konnte ich in meinem Kontext nicht herausbringen.

    In diesem Fall stand ein einfaches echo in der PHP.
    Der entsprechende Source für die PHPs, ist dieser:

    C#-Quellcode

    1. private string GetCgiData(string cgiFile, string queryString, string ext, string remoteAddress,
    2. string serverProtocol, string referer, string requestedMethod, string userAgent, string request)
    3. {
    4. var proc = new Process();
    5. if (ext == ".php")
    6. {
    7. proc.StartInfo.FileName = _xdoc.Element("configuration").Element("php").Element("Path").Value +
    8. "\\php-cgi.exe";
    9. if (!File.Exists(proc.StartInfo.FileName))
    10. {
    11. return _errorMessage;
    12. }
    13. proc.StartInfo.Arguments = " -q " + cgiFile + " " + queryString;
    14. }
    15. else
    16. {
    17. proc.StartInfo.FileName = cgiFile;
    18. proc.StartInfo.Arguments = queryString;
    19. }
    20. string scriptName = cgiFile.Substring(cgiFile.LastIndexOf('\\') + 1);
    21. proc.StartInfo.EnvironmentVariables.Add("REMOTE_ADDR", remoteAddress);
    22. proc.StartInfo.EnvironmentVariables.Add("SCRIPT_NAME", scriptName);
    23. proc.StartInfo.EnvironmentVariables.Add("USER_AGENT", userAgent);
    24. proc.StartInfo.EnvironmentVariables.Add("REQUESTED_METHOD", requestedMethod);
    25. proc.StartInfo.EnvironmentVariables.Add("REFERER", referer);
    26. proc.StartInfo.EnvironmentVariables.Add("SERVER_PROTOCOL", serverProtocol);
    27. proc.StartInfo.EnvironmentVariables.Add("QUERY_STRING", request);
    28. proc.StartInfo.UseShellExecute = false;
    29. proc.StartInfo.RedirectStandardOutput = true;
    30. proc.StartInfo.RedirectStandardInput = true;
    31. proc.StartInfo.CreateNoWindow = true;
    32. proc.Start();
    33. string str = proc.StandardOutput.ReadToEnd();
    34. proc.Close();
    35. proc.Dispose();
    36. return str;
    37. }


    Sorry, aber wie geht das mit dem Code einfügen richtig? Bei mir werden diese komischen Indents mitreingemacht.


    Ich habe das Ganze nat. schon mal mit Haltepunkten betrachtet. Eigentlich ist alles soweit ok, die Pfade stimmen etc.
    Selbst mit cmd.exe (auch als Admin ausgeführt) klappte es mit "<cgi-Pfad> -q <Dateipfad>" nicht.

    Selbe Meldung. Jetzt die Frage: Was genau bedeutet das und wo ist das Problem?
    Wie kann ich das eventuell beheben?

    Mehrere Wechsel der PHP-Versionen sowie auskommentieren des Codes für die Umgebungsvariablen etc. hat nichts gebracht.

    Grüße

    Verschoben nach sprachübergreifende Themen
    -Artentus

    Danke.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Trade“ ()

    3daycliff schrieb:

    cgiFile ist ein absoluter Pfad?

    Ja. In diesem Fall hat dieser aber keine Whitespaces. Der absolute Pfad der PHP-Datei jedoch schon. Könnte es daran irgendwie liegen?

    3daycliff schrieb:

    Der Benutzer unter dem der Prozess ausgeführt wird, hat auch die Berechtigung die Datei zu lesen?

    Ja.

    3daycliff schrieb:

    PS: Zeile 23 --> Path.GetFileName

    Danke. Hatte den Code nur soweit übernommen und nicht dran gedacht, dass ja System.IO hierfür Zeugs bereitstellt. ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ach ja, sorry, jetzt war ich etwas verquer wegen dem Namen.
    Ja, dieser enthält tatsächlich Whitespaces. Was genau hat das für Auswirkungen?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Das ist wirklich das Problem, ich glaube es nicht. Die Parameter sind also davon abhängig, deshalb ging es vermutlich auch auf dem Computer eines Kumpels und bei mir nicht.
    Fix die Datei auf den Desktop verschoben und den Pfad geändert (der enthält keine Whitespaces) und es führt problemlos aus.

    Dafür schon mal ein großes Danke! Wie genau mache ich das jetzt noch mit Whitespaces?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: