PHP5-FPM /var/run/php5-fpm/ 디렉토리를 찾을 수 없습니다

PHP5-FPM /var/run/php5-fpm/ 디렉토리를 찾을 수 없습니다

오늘 서버를 재부팅하고PHP5-FPM/var/run/php5-fpm/찾을 수 없어 시작에 실패했습니다 .

재부팅 시 이 항목 /var/run/이 지워지고 대부분의 서비스는 /var/run/다음과 같이 재부팅 시 디렉터리를 다시 생성합니다.SF 질문. 나는 항상 PHP5-FPM이 생성되었다고 가정했습니다./var/run/php5-fpm/다시 시작할 때 자동으로 이전에 다시 시작할 때 문제가 없었습니다.

PHP5-FPM이 업데이트에서 디렉토리 생성을 중단했거나 어쨌든 디렉토리를 생성하지 않았습니까? 오늘 이전에 마지막으로 재부팅한 지 30일이 넘었고 수동으로 생성할 필요가 없었습니다./var/run/php5-fpm/해당 디렉토리 또는 이전 재부팅을 위한 디렉토리입니다.

내 파일에 mkdir을 추가해야 합니까?init.dphp5-fpm용 파일입니까, 아니면 다른 권장 방법이 있습니까? 또한 이 "디렉토리를 찾을 수 없음" 오류가 이전에는 발생하지 않았던 이유는 무엇입니까?

기타 정보:

서버는 Debian 7(Wheezy), Nginx 및 MySQL을 실행하고 있습니다. /var/run에 연결되어 있습니다 /run/. /run/루트가 소유한 755의 권한이 있습니다.

감사해요.

/etc/init.d/내용 의 PHP5-FPM 파일

#!/bin/sh
### BEGIN INIT INFO
# Provides:          php-fpm php5-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php5-fpm
# Description:       Starts The PHP FastCGI Process Manager Daemon
### END INIT INFO

# Author: Ondrej Sury <[email protected]>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PHP5 FastCGI Process Manager"
NAME=php5-fpm
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm/php-fpm.conf"
PIDFILE=/var/run/php5-fpm.pid
TIMEOUT=30
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Don't run if we are running upstart
if init_is_upstart; then
    exit 1
fi

#
# Function to check the correctness of the config file
#
do_check()
{
    /usr/lib/php5/php5-fpm-checkconf || return 1
    return 0
}

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS 2>/dev/null \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME
        return 0
}

case "$1" in
    start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_check $VERBOSE
        case "$?" in
            0)
                do_start
                case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
                esac
                ;;
            1) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
    stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
    status)
        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        ;;
    check)
        do_check yes
        ;;
    reload|force-reload)
        log_daemon_msg "Reloading $DESC" "$NAME"
        do_reload
        log_end_msg $?
        ;;
    reopen-logs)
        log_daemon_msg "Reopening $DESC logs" $NAME
        if start-stop-daemon --stop --signal USR1 --oknodo --quiet \
            --pidfile $PIDFILE --exec $DAEMON
        then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;
    restart)
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
        exit 1
    ;;
esac

:

답변1

나는 이것이 귀하의 구성에서 어떻게 설정되는지에 달려 있다고 생각합니다.

내 데비안 설정에는 var/run에 php5-fpm.pid만 있는 해당 디렉토리가 없습니다.

하지만 다른 설정에서는 /var/lib/php5-fpm에 소켓이 있습니다. 소켓은 /tmp에 있지만 거기에 소켓을 설정했고 var/lib/php5-fpm이 없기 때문입니다.

그래서 /var/run/php5-fpm에서 소켓을 생성하도록 구성했지만 그 디렉토리는 재부팅 후 삭제되었고 php5-fpm은 기본적으로 소켓을 생성하지 않았습니다(이것은 제 경우입니다. php5-fpm은 소켓을 생성하지만 디렉토리가 그렇지 않은 경우) 존재하는 php5-fpm은 소켓을 생성하지 않으며 이전에 디렉토리를 생성해야 합니다)

따라서 설정을 확인하고 소켓이 생성된 위치를 확인하세요.

답변2

폴더를 수동으로 생성해야 한다고 추측해야 한다면 이는 권한 문제입니다. 해당 폴더에 대해 적절한 권한이 설정되어 있는지 확인하십시오.

답변3

PHP5-FPM이 갑자기 작동을 멈추는 이유는 아직도 모르겠습니다. 그러나 문제는 PHP5-FPM이 에서 디렉토리를 만들 수 없기 때문에 발생하므로 /var/run/해결 방법은 다음 명령을 추가하는 것입니다.

mkdir /var/run/php5-fpm/

/etc/init.d/php5-fpmfunction 아래의 파일 에 do_start().

이런 식으로 PHP5-FPM이 시작되면 디렉토리가 생성됩니다 /var/run/php5-fpm/.

메모: /var/run에 연결되어 있으므로 /run/시스템 /run/에서도 작동할 수 있습니다.

관련 정보