代码之家  ›  专栏  ›  技术社区  ›  JiminyCricket

在apache passenv/setenv中设置ld_library_路径仍然找不到库

  •  5
  • JiminyCricket  · 技术社区  · 15 年前

    我正在尝试测试网络源3d party的实现。我可以从命令行获得运行良好的测试文件,这要求在linux上,我将支付库的路径导出到ld_library_path。

    为了在我的服务器上测试这个,我创建了下面的apache配置

    <VirtualHost 127.0.0.1:12345>
      AddHandler cgi-script .cgi
      AddHandler fcgid-script .php .fcgi
      FCGIWrapper /my/path/to/php_fcgi/bin/php-cgi .php
      AddType text/html .shtml
      AddOutputFilter INCLUDES .shtml
      DocumentRoot /my/path/to/cybersource/simapi-php-5.0.1/
      ProxyPreserveHost on
    
      <Directory /my/path/to/cybersource/simapi-php-5.0.1>
        SetEnv LD_LIBRARY_PATH /my/path/to/cybersource/LinkedLibraries/lib/
        AllowOverride all
        Options +Indexes
        IndexOptions Charset=UTF-8
      </Directory>
    </VirtualHost>
    

    我已经用set env命令在那里设置了env变量,当我运行一个打印

    <?php phpinfo(); ?>
    

    但是,通过浏览器调用的测试脚本仍然无法工作,apache说:

    tail /my/apache/error_log 
    [Tue Mar 30 23:11:46 2010] [notice] mod_fcgid: call /my/path/to/cybersource/index.php with wrapper /my/path/to/cybersource/php_fcgi/bin/php-cgi
    PHP Warning:  PHP Startup: Unable to load dynamic library '/my/path/to/cybersource/extensionsdir/php5_cybersource.so' - libspapache.so: cannot open shared object file: No such file or directory in Unknown on line 0
    

    所以它找不到链接文件libspapache.so,即使它在应该定义的ld_library_路径中

    我真的很感激你的帮助。非常感谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   hobbs    15 年前

    SetEnv 是每个请求的内容,因此它不会影响 FCGIWrapper 在下面运行。你想用 FcgidInitialEnv FcgidCmdOptions 在包装器的环境中设置变量。