PHP5-FPM /var/run/php5-fpm/-Verzeichnis nicht gefunden

PHP5-FPM /var/run/php5-fpm/-Verzeichnis nicht gefunden

Heute habe ich meinen Server neugestartet undPHP5-FPMDer Start ist fehlgeschlagen, da /var/run/php5-fpm/er nicht gefunden wurde.

Das /var/run/wird beim Neustart gelöscht und die meisten Dienste erstellen ihre /var/run/Verzeichnisse beim Neustart neu, wie in diesem zu sehenSF-Frage. Ich bin immer davon ausgegangen, dass PHP5-FPM erstellt/var/run/php5-fpm/automatisch beim Neustart und bei vorherigen Neustarts gab es keine Probleme.

Hat PHP5-FPM bei einem Update aufgehört, das Verzeichnis zu erstellen, oder hat es das Verzeichnis ohnehin nie erstellt? Mein letzter Neustart vor heute war vor über 30 Tagen und ich musste das Verzeichnis nicht manuell erstellen./var/run/php5-fpm/Verzeichnis für diesen oder alle vorherigen Neustarts.

Muss ich mkdir zu meinem hinzufügen?init.dDatei für php5-fpm, oder gibt es einen anderen empfohlenen Weg? Und warum ist dieser „Verzeichnis nicht gefunden“-Fehler nicht vorher aufgetreten?

Andere Information:

Auf dem Server laufen Debian 7 (Wheezy), Nginx und MySQL. /var/runist verknüpft mit /run/. /run/hat die Berechtigungen 755, Eigentümer ist root.

Danke.

PHP5-FPM-Datei im /etc/init.d/Inhalt

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

:

Antwort1

Ich denke, es hängt davon ab, wie dies in Ihrer Konfiguration eingestellt ist.

Auf meinem Debian-Setup habe ich dieses Verzeichnis nicht, sondern nur eine php5-fpm.pid unter var/run

Aber ich habe einen Socket auf /var/lib/php5-fpm in anderen Setups ist der Socket auf /tmp, aber das liegt daran, dass ich ihn dort eingestellt habe und nicht über var/lib/php5-fpm verfüge

Ich denke also, dass Sie dies zum Erstellen eines Sockets unter /var/run/php5-fpm konfigurieren, dieses Verzeichnis jedoch beim Neustart gelöscht wird und php5-fpm es standardmäßig nicht erstellt (das ist mein Fall, php5-fpm erstellt Sockets, aber wenn das Verzeichnis nicht existiert, erstellt php5-fpm den Socket nicht und Sie müssen das Verzeichnis vorher erstellen).

Überprüfen Sie also Ihre Einstellungen und sehen Sie, wo der Socket erstellt wird.

Antwort2

Wenn ich raten müsste, würde ich sagen, dass der Ordner manuell erstellt werden sollte und dass es sich um ein Berechtigungsproblem handelt. Stellen Sie sicher, dass für diesen Ordner die richtigen Berechtigungen festgelegt sind.

Antwort3

Ich weiß immer noch nicht, warum PHP5-FPM plötzlich nicht mehr funktioniert, aber da das Problem darauf zurückzuführen ist, dass PHP5-FPM keine Verzeichnisse in erstellen kann /var/run/, besteht eine Problemumgehung darin, den Befehl hinzuzufügen

mkdir /var/run/php5-fpm/

zur /etc/init.d/php5-fpmDatei unter der Funktion do_start().

Auf diese Weise wird beim Start von PHP5-FPM das Verzeichnis erstellt /var/run/php5-fpm/.

Notiz: /var/runist verknüpft und funktioniert /run/möglicherweise /run/auch auf Ihrem System.

verwandte Informationen