Это мой простой привет-мир FastCGI скрипт, написанный на языке C.FastCGI скрипт не может найти libfcgi.so.0 в Apache 2.4.6 и mod_fastcgi
#include "fcgi_stdio.h"
#include <stdlib.h>
void main(void)
{
int count = 0;
while(FCGI_Accept() >= 0)
printf("Content-type: text/html\r\n"
"\r\n"
"<title>FastCGI Hello!</title>"
"<h1>FastCGI Hello!</h1>"
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_NAME"));
}
Он отлично работает, если я скомпилирован с использованием статического сшивание.
gcc -o "test.fcg" "test.c" /usr/local/lib/libfcgi.a
Но при использовании динамического связывания ...
gcc -o "test.fcg" -lfcgi "test.c"
Это не может ти из-за ошибки в апача error_log
.
/var/www/fcgi-bin/test.fcg: error while loading shared libraries: libfcgi.so.0: cannot open shared object file: No such file or directory
[Thu Mar 05 14:04:22.707096 2015] [:warn] [pid 6544] FastCGI: (dynamic) server "/var/www/fcgi-bin/test.fcg" (pid 6967) terminated by calling exit with status '127'
[Thu Mar 05 14:04:22.707527 2015] [:warn] [pid 6544] FastCGI: (dynamic) server "/var/www/fcgi-bin/test.fcg" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
Так я говорю Apache и mod_fastcgi искать этот файл, в котором он находится установка переменной LD_LIBRARY_PATH
в httpd.conf
...
SetEnv LD_LIBRARY_PATH /usr/local/lib
... и fastcgi.conf
.
FastCgiConfig -initial-env LD_LIBRARY_PATH=/usr/local/lib -idle-timeout 20 -maxClassProcesses 1
Использование статического связанный скрипт, getenv("LD_LIBRARY_PATH")
возвращает /usr/local/lib
, но динамические-сшитый сценарии еще не бросали найденные ошибки для libfcgi.so.0
.
Любые идеи, чтобы сделать эту работу?
Заранее спасибо.
Опция '-rpath' была трюком. Спасибо дружище! Через пару часов вы получите +50. – cdonts