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
miszczu
  • 119
  • 1
  • 1
  • 5

1 Answers1

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
quanta
  • 50,327
  • 19
  • 152
  • 213
  • 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. – miszczu Sep 06 '12 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. – quanta Sep 06 '12 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 – miszczu Sep 06 '12 at 16:27
  • Updated my question. Append it to the `ENV` line, then restart Apache and try again. – quanta Sep 06 '12 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. – miszczu Sep 06 '12 at 16:48
  • Where did you install SQL Anywhere? Try sourcing the `sa_config.sh` in the init script as I mentioned above. – quanta Sep 06 '12 at 17:22
  • I didn't install it on this VPS, I need to connect to external server. Should I install it? I thought I need only libraries, not all software. – miszczu Sep 07 '12 at 08:53