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.
    – cjc
    Sep 6, 2012 at 16:34
  • in /etc/init.d/httpd
    – miszczu
    Sep 6, 2012 at 16:38
  • Actually, more specifically, how did you install Apache?
    – cjc
    Sep 6, 2012 at 16:38
  • sorry, I didnt know what did you mean by that. It was already there, it's VPS server.
    – miszczu
    Sep 6, 2012 at 16:42
  • Looking at these comments, is this question really about Apache? Should it be re-tagged?
    – pjmorse
    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.
    – miszczu
    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.
    – quanta
    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
    – miszczu
    Sep 6, 2012 at 16:27
  • Updated my question. Append it to the ENV line, then restart Apache and try again.
    – quanta
    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.
    – miszczu
    Sep 6, 2012 at 16:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .