#c #fastcgi #lighttpd
#c #fastcgi #lighttpd
Вопрос:
Я установил LightTPD в Windows. Обычно он запускается без fastcgi. Затем я копирую / вставляю один из примеров FastCGI
#include <sstream> // manipulate strings (integer conversion)
#include <string> // work with strings in a more intuitive way
#include "libfcgi2.h" // Header file for libfcgi2.dll (linked with libfcgi2.lib)
using namespace std;
int main( )
{
printf("Start...rn");
FCGX_REQUEST Req = { 0 }; // Create amp; Initialize all members to zero
int count(0);
string sReply;
ostringstream ss;
FCGX_InitRequest( amp;Req, 0, 0 ); // FCGX_DEBUG - third parameter
// Open Database
while(true)
{
if( FCGX_Accept_r(amp;Req) < 0 ) break; // Execution is blocked here until a Request is received
count ;
ss << count; // Stringstream is a typesafe Integer conversion
sReply = "Content-Type: text/htmlrnrn Hello World " ss.str();
FCGX_PutStr( sReply.data(), sReply.length(), Req.pOut );
ss.str(""); // clear the string stream object
}
// Close Database
printf("End...rn");
return 0;
}
и пытаюсь запустить сервер со следующей конфигурацией:
server.modules = (
...
"mod_fastcgi",
....
fastcgi.server = ( ".exe" =>
( "" =>
( "bin-path" => "C:FastCGIExamplesC Ex_Counter.exe",
"port" => 8080,
"min-procs" => 1,
"max-procs" => 1
)
)
)
И ошибка усиления при запуске:
C:LightTPD>LightTPD.exe -f conflighttpd-inc.conf -m lib -D
cygwin warning:
MS-DOS style path detected: conflighttpd-inc.conf
Preferred POSIX equivalent is: conf/lighttpd-inc.conf
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
2011-10-07 12:50:25: (log.c.166) server started
2011-10-07 12:50:25: (mod_fastcgi.c.1367) --- fastcgi spawning local
proc: C:FastCGIExamplesC Ex_Counter.exe
port: 8080
socket
max-procs: 1
2011-10-07 12:50:25: (mod_fastcgi.c.1391) --- fastcgi spawning
port: 8080
socket
current: 0 / 1
2011-10-07 12:50:25: (mod_fastcgi.c.1104) the fastcgi-backend C:FastCGIExample
sC Ex_Counter.exe failed to start:
2011-10-07 12:50:25: (mod_fastcgi.c.1108) child exited with status 0 C:FastCGI
ExamplesC Ex_Counter.exe
2011-10-07 12:50:25: (mod_fastcgi.c.1111) If you're trying to run your app as a
FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2011-10-07 12:50:25: (mod_fastcgi.c.1399) [ERROR]: spawning fcgi failed.
2011-10-07 12:50:25: (server.c.942) Configuration of plugins failed. Going down.
Я не использую php, поэтому я не знаю, где мне следует установить этот флаг.
Ответ №1:
Похоже, что в примере не удалось вызвать FCGX_Init() до того, как он начал использовать функции библиотеки FCGX. Это приведет к тому, что FCGX_Accept_r вернет условие ошибки, отличное от 0, и приведет к завершению вашего примера со статусом 0, указанным в файле журнала, который вы видите.
Из fcgiapp.h:
/*
*----------------------------------------------------------------------
*
* FCGX_Accept_r --
*
* Accept a new request (multi-thread safe). Be sure to call
* FCGX_Init() first.
*
Комментарии:
1. Но в libfcgi2.h нет FCGX_Init()
2. @Ivan, хм, я понимаю. Используете ли вы дополнительный источник из www.coastrd.com ? Если вы посмотрите в их файл libfcgi2.h, вы увидите очень похожий комментарий, в котором говорится, что FCXG_Init() должен быть вызван первым. Поскольку у них нет объявленной этой функции, я подозреваю, что есть небольшая ошибка или какое-то другое предварительное условие, для которого они не обновили пример. Я бы связался с ними напрямую по поводу примера. Основная исходная база для fastcgi2, о которой я знаю, находится по адресу fastcgi.com/drupal/node/5 и я думаю, что именно оттуда эта компания перенесла свою версию.
3. Попробуйте использовать другую библиотеку из fastcgi.com/dist/fcgi.tar.gz Скачал, распаковал его, затем из «Командной строки Visual Studio (2010)» nmake -f скопировал Makefile.nt fcgi-2.4.0libfcgiReleaselibfcgi.dll для fcgi-2.4.0examplesecho-cppReleaselibfcgi.dll И используйте конфигурацию lightttpd с: «bin-path» => «C:Downloadsfcgi-2.4.0examplesecho-cppReleaseecho-cpp.exe »
4. C:LightTPD >LightTPD.exe -f conf lighttpd-inc.conf -m lib -D … 2011-10-27 10:45:46: (mod_fastcgi.c.1391) — порт создания fastcgi: 9000 ток сокета: 0/1 неизвестный тип списка (0) 2011-10-27 10:45:46: ( mod_fastcgi.c.1104) серверная часть fastcgi C:Downloadsfcgi — 2.4.0examplesecho-cppReleaseecho-cpp.exe не удалось запустить: …. ошибка неизвестного типа списка (0) произошла в fastcgi.com/devkit/examples/echo-cpp.cpp::113 в то время как (FCGX_Accept_r(amp;request) == 0)