无法为模块DBD :: Oracle:'libclntsh.so.12.1'加载'/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so'

时间:2018-09-04 13:35:13

标签: php linux perl centos7 oracle12c

当尝试运行从PHP网页创建新的oracle数据库的perl脚本时,会引发错误。

  • 我的PHP页面托管在linux服务器(centos7)
  • 更新了以下环境变量:

    export ORACLE_HOME=oracle home path export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH

  • 单击HTML按钮后,将从PHP代码执行perl工具:

    exec("perl scriptName.pl" )

  • 出现以下错误:

      

    install_driver(Oracle)失败:无法为模块DBD :: Oracle加载'/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so':无法打开共享对象文件:/usr/lib64/perl5/DynaLoader.pm第190行处没有此类文件或目录。   在(eval 17)第3行。   (eval 17)第3行的require编译失败。   可能未在预期的位置安装必需的共享库或dll   在(eval 10)行22698。

  • 即使单独运行perl脚本,而无需通过在Linux服务器上执行"perl script.pl"来从Web php页面调用,代码也已执行且没有错误。

1 个答案:

答案 0 :(得分:0)

实际上,错误消息包含重要的指针(强调我的意思):

  

install_driver(Oracle)失败:无法加载   '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so'用于模块   DBD :: Oracle: libclntsh.so.12.1:无法打开共享对象文件:否   此类文件或目录位于/usr/lib64/perl5/DynaLoader.pm第190行。   (eval 17)第3行。(eval 17)第3行的要求中编译失败。   可能未在其中安装必需的共享库或dll   预计在(eval 10)行22698。

Oracle's "instant client"库通过LD_LIBRARY_PATH环境变量不可用时,会出现此问题。这组库包含libclntsh.so(以及后缀取决于版本)。安装完成后,只需确保LD_LIBRARY_PATH中存在相应的路径即可。