【发布时间】:2013-10-21 08:16:55
【问题描述】:
我用 C++ 构建了一个 .CGI。此二进制文件依赖于特定文件夹/usr/local/boost/ 中的一些boost 共享库和其他资源。 CGI 不执行,在日志中我可以看到错误
error while loading shared libraries: libdxxx: cannot
open shared object file: No such file or dire
现在,我看了很多日志说我必须在httpd.conf下面设置,但还是不行。
SetEnv LD_LIBRARY_PATH /usr/local/boost:
在我的配置中,我将这一行设置为“原样”在配置文件的末尾,而不包含在任何VirtualHOst or Directory 部分中。我尝试插入 cgi-bin 的目录,但还是一样
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetEnv LD_LIBRARY_PATH /usr/local/boost
</Directory>
我也尝试过(参见下面的讨论)为 ldconfig 添加一个 .conf 文件,但它仍然不起作用!
#added a file called myconfig.conf conrtaining a line
/usr/local/boost
/etc/ld.conf.d/
ldconfig (as root)
我还读到httpd 继承了运行它的 ROOT 用户的环境变量;当我 root 时,我调用以下命令来启动 Apache,并且 LD_LIBRARY_PATH 设置正确,但仍然有问题。
/etc/init.d/httpd start
我使用的是 Red Hat 6.2。
【问题讨论】:
-
在 myconfig.conf 你有:#/usr/local/boost, "#" 被删除了?
-
我临时切换到 MONGOOSE,10 分钟内全部立即生效。
标签: apache cgi environment-variables cgi-bin