0

Where and how should I set LD_LIBRARY_PATH to be visible by apache?

I tried to add following code to .bash_profile:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/folder_with_library/ export LD_LIBRARY_PATH 

I restart apache but in phpinfo() i still see errors, so libraries hasn't been loaded.
It was working for command: echo $LD_LIBRARY_PATH.

Any help how to set this path?

I need to set that on VPS server - os is linux red-hat.

/etc/init.d/httpd file content:

 #!/bin/bash # # Startup script for the Apache Web Server # # chkconfig: - 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # pidfile: /var/run/httpd.pid # config: /etc/httpd/conf/access.conf # config: /etc/httpd/conf/httpd.conf # config: /etc/httpd/conf/srm.conf ulimit -HSn 32768 # Source function library. . /etc/rc.d/init.d/functions # This will prevent initlog from swallowing up a pass-phrase prompt if # mod_ssl needs a pass-phrase from the user. INITLOG_ARGS="" # Path to the apachectl script, server binary, and short-form for messages. apachectl=/usr/sbin/apachectl httpd=/usr/sbin/httpd prog=httpd RETVAL=0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/etc/domeny:/etc/local/bin:.:$PATH ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin LC_MESSAGES=en_US" #LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/sql_anywhere/ #export LD_LIBRARY_PATH # check for 1.3 configuration check13 () { CONFFILE=/etc/httpd/conf/httpd.conf GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|" GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|" GONE="${GONE}AccessConfig|ResourceConfig)" if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then echo echo 1>&2 " Apache 1.3 configuration directives found" echo 1>&2 " please read @docdir@/migration.html" failure "Apache 1.3 config directives test" echo exit 1 fi } # The semantics of these two functions differ from the way apachectl does # things -- attempting to start while running is a failure, and shutdown # when not running is also a failure. So we just do it the way init scripts # are expected to behave here. start() { echo -n $"Starting $prog: " check13 || exit 1 $ENV $httpd -k start -DSSL RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc $httpd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid } waitforexit() { count=${2:-30} while [ 0$count -gt 0 ] do PIDS=`ps -C$prog --no-heading e | grep $httpd` || break PIDS=`echo "$PIDS" | awk '{print $1}' | tr '\n' ' '` echo Remaining processes: $PIDS stop sleep 2 count=`expr $count - 1` done if [ 0$count -eq 0 ]; then echo Remaining processes: $PIDS return 1 fi return 0 } reload() { echo -n $"Reloading $prog: " check13 || exit 1 killproc $httpd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $httpd RETVAL=$? ;; restart) stop waitforexit "httpd" 20 start ;; condrestart) if [ -f /var/run/httpd.pid ] ; then stop start fi ;; reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac exit $RETVAL 
5
  • That's a non-standard httpd init script for CentOS. Where did you get it? quanta's answer is correct for the standard CentOS init script. Commented Sep 6, 2012 at 16:34
  • in /etc/init.d/httpd Commented Sep 6, 2012 at 16:38
  • Actually, more specifically, how did you install Apache? Commented Sep 6, 2012 at 16:38
  • sorry, I didnt know what did you mean by that. It was already there, it's VPS server. Commented Sep 6, 2012 at 16:42
  • Looking at these comments, is this question really about Apache? Should it be re-tagged? Commented Sep 20, 2012 at 14:03

1 Answer 1

5

Since the init script include the following:

if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd fi 

You can set it in /etc/sysconfig/httpd:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/folder_with_library/ export LD_LIBRARY_PATH 

UPDATE Thu Sep 6 23:27:06 ICT 2012

Change the ENV line to:

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin LC_MESSAGES=en_US LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/sql_anywhere/"

and try again.


UPDATE Fri Sep 7 00:14:11 ICT 2012

Add the following to the init script (underneath the # Source function library. line) to see what happens:

# Source SQL Anywhere . /path/to/the/sa_config.sh 
7
  • Sorry, but i'm not too good in that. When you wrote init script, what file would it be? Also I haven't got file /etc/sysconfig/httpd, but I've got /etc/init.d/httpd - is it the same file but in different location (different serv. spec.?). Please please HELP. Commented Sep 6, 2012 at 16:12
  • The init script is /etc/init.d/httpd. You can also set it in the start() function. Append the content of this file to your original post. Commented Sep 6, 2012 at 16:15
  • as you can see I tryied to add this LD_.._PATH but it didnt work after restarting apache, so I've change it to comment Commented Sep 6, 2012 at 16:27
  • Updated my question. Append it to the ENV line, then restart Apache and try again. Commented Sep 6, 2012 at 16:38
  • This is I've got in phpinfo(): LD_LIBRARY_PATH :/usr/lib/sql_anywhere/, but still have error: SQLAnywhere client version The SQLAnywhere client libraries could not be loaded. Please ensure that libdbcapi.so can be found in your LD_LIBRARY_PATH environment variable.. Does it mean I upload wrong libraries? File exist in location I set. Commented Sep 6, 2012 at 16:48

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.