2011-01-03 16 views
1

Ich verwende die fastcgi C/C++ toolkit, um eine Test fastcgi App zu entwickeln. Ich baute (und teste jetzt) ​​this example von dem Toolkit bereitgestellt.C/C++ FastCGI Entwickler Toolkit Beispielprogramm (funktioniert nicht?)

Ich habe Apache mod_fcgid geladen und den Apache2-Daemon erfolgreich neu gestartet. Wenn ich jedoch versuche, auf die fastcgi-Ressource zuzugreifen, wird eine leere Seite zurückgegeben.

Hinweis: Ich habe die folgenden Änderungen an dem Beispiel-Code (da es nicht mit dem Standard-Socket fd Wert 0 nicht funktioniert):

int sock_fd = FCGX_OpenSocket(":5000", 1); 
FCGX_InitRequest(&request, sock_fd, 0); 

Meine/etc/apache2/mods -fähigen/fcgid.conf Datei sieht wie folgt aus:

<IfModule mod_fcgid.c> 
    AddHandler fcgid-script .fcgi 
    SocketPath /var/lib/apache2/fcgid/sock 
    IPCConnectTimeout 10 
    IPCCommTimeout 20 
    OutputBufferSize 0 
    MaxRequestsPerProcess 500 
</IfModule> 

Meine /etc/apache2/mods-enabled/fcgid.load Datei sieht wie folgt aus:

ich zugegriffen dann die 'Ressource' in einem Browser die folgende URL ein:

http://127.0.0.1:5000

Was mache ich falsch? (Unter der Annahme, dass jemand tatsächlich geschaffen, das Beispiel oben zitiert zu bekommen, zu arbeiten)

Ich entwickle/Test auf Linux Ubuntu 10.x

+0

Haben Sie Ihre Protokolle (http://httpd.apache.org/docs/1.3/logs.html) überprüft, um zu sehen, ob irgendwelche Hinweise da sind? –

+0

@PDI: Es gibt keine Nachrichten in Bezug auf fastcgi (oder fcgid für diese Angelegenheit), in der Apache-Protokolldatei – skyeagle

+0

Dies ist ein Longshot, aber was ich über fastcgi gelesen habe, ist, dass der OpenSocket-Aufruf eine Datei erstellen wird, aber diese Datei benötigt korrekte Berechtigungen, um dem Webserver die Verbindung zu ermöglichen. Ich denke, dass es für den Benutzer, unter dem der Webserver läuft, sowohl lesen als auch schreiben muss. –

Antwort

0

Ich benutze keine Apache für Weile, aber ich denke, dass Ihre URL ist schlecht i apache laufen auf Port 80 und Ihre echo.fcgi ist fcgi Anwendung

http://localhost/echo.fcgi 
0

Run apachctl -D zu überprüfen, an der Wurzel des apache-Ordner

für Informationen, verwende ich nginx übernehmen Ihre dienen Habe mod_fcgid ausgeführt. Ich glaube, dass keine Ausgabe (d. H. Eine weiße Seite) auftritt, wenn Ihr Prozess abstürzt.

Sie müssen Ihr Programm mit Debugging (-O0 -ggdb) kompilieren, Apache neu bereitstellen und neu starten.

Ändern Sie Ihre Apache-Konfiguration so, dass nur ein Prozess generiert wird. Auf diese Weise können Sie gdb an Ihre FCGI-Anwendung anhängen und sie debuggen.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+0

Oh, wie PDI vorschlägt, könnte ein Erlaubnisproblem sehr gut möglich sein. Stellen Sie sicher, dass Apache über die Berechtigung zum Ausführen Ihrer FCGI-Binärdatei verfügt. –