gpt4 book ai didi

c - FastCGI 脚本在 Apache 2.4.6 和 mod_fastcgi 中找不到 libfcgi.so.0

转载 作者:行者123 更新时间:2023-11-30 15:23:16 25 4
gpt4 key购买 nike

这是我用 C 编写的简单的 hello-world 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"

它失败并在 Apache 的 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 在 httpd.conf 中设置 LD_LIBRARY_PATH 变量来查找该文件所在的位置...

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

有什么想法可以让这项工作成功吗?

提前致谢。

最佳答案

我在 nginx 上遇到了类似的问题,我通过使用 rpath 选项修复了它。

不确定它是否对 Apache 有帮助。尝试像这样构建二进制文件:

gcc test.c -Wl,-rpath /usr/local/lib -lfcgi -o test.fcg

确保库文件 libfcgi.so.0 存在于 /usr/local/lib 中。

如果您无权访问 /usr/local/lib,请在 $HOME 中创建 lib 文件夹,然后将库文件复制到那里。并更新 rpath 以指向那里。例如,如果您的 $HOME/home/xyz,那么您将构建如下:

gcc test.c -Wl,-rpath /home/xyz/lib -lfcgi -o test.fcg

有时我使用这个技巧来加载比系统上安装的库更新的库。

关于c - FastCGI 脚本在 Apache 2.4.6 和 mod_fastcgi 中找不到 libfcgi.so.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com