我正在运行 Ubuntu 17.04。我有一个在 Wildfly 10.1.0 中运行的应用程序,我正在尝试使用 Apache 2.4 强制用户在浏览到应用程序 URL 时登录。我已经在 Windows 环境中实现了此功能,并希望它能像将我的 Apache 配置文件复制到 Ubuntu 机器一样简单,但事实并非如此。
我在 httpd.conf 中添加了下面这行
Include conf/extra/dbd.conf
conf/extra/dbd.conf 的内容:
DBDriver oracle
DBDParams user=xx;pass=yy;server=zz
DBDMin 2
DBDKeep 4
DBDMax 10
DBDExptime 300
然后我尝试使用以下命令重新启动 Apache:
sudo /usr/local/apache2/bin/apachectl restart -f /usr/local/apache2/conf/httpd.conf
我收到消息:
AH00526: Syntax error on line 1 of /usr/local/apache2/conf/extra/dbd.conf
Can't load driver file apr_dbd_oracle.so
我关注了this关于如何构建文件 apr_dbd_oracle.so 的教程。我试图通过运行以下命令来验证 apr_dbd_oracle.so 是否已正确构建:
ldd /usr/local/apr/lib/apr-util-1/apr_dbd_oracle.so
产生输出:
linux-vdso.so.1 => (0x00007ffc2d3f6000)
libclntsh.so.11.1 => /u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so.11.1 (0x00007f92d4b0e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f92d48d7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f92d4510000)
libnnz11.so => /u01/app/oracle/product/11.2.0/xe/lib/libnnz11.so (0x00007f92d4148000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f92d3f44000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f92d3c39000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f92d3a20000)
libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007f92d381e000)
/lib64/ld-linux-x86-64.so.2 (0x0000561dd2f8b000)
我不是 Linux 专家,但我怀疑如果 .so 文件已损坏,那么 ldd 将不会产生此输出。我由此得出结论,apr_dbd_oracle.so 可以工作,但 Apache 找不到它。我尝试通过复制文件和创建符号链接(symbolic link)将文件复制到不同的位置。我也尝试过谷歌搜索,Apache 在其中查找文件但没有成功。
谁能阐明 Apache 期望文件 apr_dbd_oracle.so 所在的目录?提前致谢。
最佳答案
从我们之前的谈话中:
用于 root 访问的共享库配置与登录用户不同。
尝试在没有 sudo 的情况下执行,看看是否是配置问题。
关于linux - Ubuntu : "Can' t load driver file apr_dbd_oracle. 上的 Apache 2.4 所以”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740913/