httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francoise Koenig-Jost <j...@esrf.fr>
Subject [users@httpd] library path for external rewriting program for mod_rewrite
Date Wed, 17 Oct 2007 12:34:40 GMT
Dear All,

I've been using for several months an external rewriting program for 
mod_rewrite in Apache 1.3.27 which is working as expected, now I want to 
upgrade to Apache 2.2.6 and I run into trouble when my program needs to 
open a library file not in /usr/lib.

Here are the details of my installation:

- Sun server under Solaris 10

- Apache 2.2.6 compiled with gcc 3.4.6 (gcc installed in /usr/local/bin 
, /usr/local/lib, etc.). Apache is installed in /www/httpd-2.2.6 with 
symbolic link /www/apache2

- External rewriting script in Python ( python 2.5.1 installed in 
/opt/Python-2.5.1 with symbolic link /opt/python, was also compiled with 
gcc), the script starts with the magical "#!/opt/python/bin/python". The 
script works stand-alone with the same LD_LIBRARY_PATH as the httpd daemon.

- LD_LIBRARY_PATH of the httpd daemon : 
/www/httpd-2.2.6/lib:/usr/lib:/usr/local/lib:/usr/dt/lib:/usr/openwin/lib

The problem:

- The external rewriting script crashes with the following message in 
the error_log:

Traceback (most recent call last):
  File "/www/apache2/conf/extra/query_string.py", line 11, in <module>
    import sys, cgi, urllib
  File "/opt/Python-2.5.1/lib/python2.5/cgi.py", line 37, in <module>
    from operator import attrgetter
ImportError: ld.so.1: python: fatal: libgcc_s.so.1: open failed: No such 
file or directory

- I modified the script to make it dump its environment variables in a 
file when it starts, it has none.

- I tried to add:
     SetEnv LD_LIBRARY_PATH "/www/httpd-2.2.6/lib:/usr/lib:/usr/local/lib"
  in apache configuration file, it does not change anything.

- If I copy /usr/local/lib/libgcc_s.so.1 in /usr/lib ,  everything works 
fine, the script is in the process list as:

wwwextnew: # ps -ef|grep 29311
  apache 29313 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
  apache 29316 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
  apache 29314 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
  apache 29317 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
    root 29312 29311   0 13:41:02 ?           0:00 
/opt/python/bin/python /www/apache2/conf/extra/query_string.py
  apache 29315 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
    root 29311     1   0 13:41:02 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
wwwextnew: #

But since I don't like to mess up the system installation directories, 
I'd like to know what I should do to set the LD_LIBRARY_PATH for the 
python script. (remember, it works with Apache 1.3.27).

Remark:

I have noticed that the process of the python script is directly started 
by httpd for Apache 2.2.6 :

    root 29312 29311   0 13:41:02 ?           0:00 
/opt/python/bin/python /www/apache2/conf/extra/query_string.py
  apache 29315 29311   0 13:41:03 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start
    root 29311     1   0 13:41:02 ?           0:00 
/www/httpd-2.2.6/bin/httpd -k start

but started by a shell for Apache 1.3.27 :

    root  6510  6509  0 14:22:17 ?        0:00 /opt/python/bin/python 
/www/apache/conf/query_string.py
    root  6509 21261  0 14:22:17 ?        0:00 /bin/sh -c 
/www/apache/conf/query_string.py
  apache 14192 21261  0 14:30:46 ?        0:00 
/www/apache_1.3.27/bin/httpd -DSSL
  apache  6527 21261  0 14:22:18 ?        0:03 
/www/apache_1.3.27/bin/httpd -DSSL
    root 21261     1  0   Sep 11 ?        6:36 
/www/apache_1.3.27/bin/httpd -DSSL

Thanks in advance for your help and best regards,

Francoise Koenig

Web group - http://www.esrf.eu/



Mime
View raw message