如何在 VPS red-hat linux 上设置 LD_LIBRARY_PATH 以供 apache 看到

如何在 VPS red-hat linux 上设置 LD_LIBRARY_PATH 以供 apache 看到

我应该在哪里以及如何设置LD_LIBRARY_PATH为对 apache 可见?

我尝试添加以下代码到.bash_profile

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

我重新启动了 Apache,但phpinfo()仍然看到错误,因此库尚未加载。
它正在执行命令:echo $LD_LIBRARY_PATH

关于如何设置此路径有任何帮助吗?

我需要在 VPS 服务器上进行设置 - 操作系统是 linux red-hat。

/etc/init.d/httpd文件内容:

    #!/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

答案1

由于 init 脚本包含以下内容:

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

您可以将其设置到/etc/sysconfig/httpd

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

更新时间:2012 年 9 月 6 日星期四 23:27:06 ICT

将该ENV行更改为:

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/"

然后再试一次。


更新时间:2012 年 9 月 7 日星期五 00:14:11 ICT

将以下内容添加到初始化脚本(该# Source function library.行下方)以查看会发生什么:

# Source SQL Anywhere
. /path/to/the/sa_config.sh

相关内容