在Apache PassEnv/SetEnv中设置LD_LIBRARY_PATH仍然无法找到库

Jim*_*ket 5 php linux apache environment-variables loader

我正在尝试测试Cyber​​source 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>
Run Code Online (Sandbox Code Playgroud)

我已经使用SetEnv命令设置了env变量,当我运行打印的页面时,这似乎正常

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

但是,当通过浏览器调用时,测试脚本仍无法正常工作,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
Run Code Online (Sandbox Code Playgroud)

所以它找不到链接文件libspapache.so,即使它位于LD_LIBRARY_PATH中,据说是定义的

我非常感谢你的帮助.非常感谢.

hob*_*bbs 1

SetEnv是每个请求的事情,所以它不会影响运行的上下文FCGIWrapper。您想要使用FcgidInitialEnvFcgidCmdOptions在包装器的环境中设置变量。