GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Php Fpm funcionando, ¿pero ignorando la versión de Sethandler?

Nuestro servidor es Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-135-generic x86_64).

Seguimos las instrucciones de https://tecadmin.net/install-multiple-php-version-apache-ubuntu/ hace un tiempo y ejecutamos PHP 5.6 y 7.2 cuando 7.2 era nuevo, y hemos actualizado y agregado 7.3 y 7.4 con ningún problema hasta esta mañana. Ayer funcionaba bien pero hoy no. Ayer empaquetamos la actualización temprano, pero no requirió un reinicio y no creo que se haya reiniciado durante la noche por sí solo como uptime dice que estamos cerca de los 15 días.

Así que hoy comenzamos a pasar por el proceso nuevamente y hemos hecho esto, reiniciando apache2 después de cada paso:

Probado:a2enmod actions fcgid alias proxy_fcgi y obtuve:ERROR:¡El módulo fcgid no existe!

apt install apache2 libapache2-mod-fcgid y eso funcionó y agregó el paquete.

Hizo a2enmod actions fcgid alias proxy_fcgi y decía todo ya habilitado .

Archivo conf verificado en /etc/apache2/sites-enabled :

<FilesMatch .php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>

Intenté phpinfo() page y obtuve PHP 7.4.15 en lugar del esperado 5.6.40. Hicimos lo mismo con un 7.3 y obtuvimos el mismo 7.4 en phpinfo() usando SetHandler de php7.3 también.

Luego probé systemctl status php5.6-fpm y php7.4-fpm y ambos activos (en ejecución)

Mi /etc/apache2/conf/php5.6-fpm.conf El archivo está aquí para empezar, y el de php7.4-fpm.conf es el mismo excepto por mod_php5/7 y la versión de SetHandler:

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php5.c>
<IfModule proxy_fcgi_module>
    # Enable http authorization headers
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+.ph(ar|p|tml)$">
        <If "-f %{REQUEST_FILENAME}">
            SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
        </If>
    </FilesMatch>
    <FilesMatch ".+.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^.ph(ar|p|ps|tml)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule>

¿Hay algún error aquí o en algún otro lugar donde deba buscar?

FWIW, tenemos otro servidor con una configuración similar y tiene el mismo problema, pero solo necesitamos la aplicación heredada 5.6 en ese servidor en este momento, así que simplemente deshabilitamos 7.4 eliminando el archivo de puntero en /etc/apache2/conf- enable/php7.4-fpm.conf y reiniciando apache2. Sin embargo, este servidor necesita varias versiones.

Relacionado:¿Cómo elegir la versión predeterminada de Gcc y G++ en Ubuntu?

Respuesta aceptada:

Cambiar:

<FilesMatch .php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>

para:

<FilesMatch .php$>
   <If "-f %{REQUEST_FILENAME}">
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
   </If>
</FilesMatch>

Ubuntu
  1. Cómo cambiar la versión de PHP

  2. ¿Ubuntu One Oauth iniciar sesión desde Php?

  3. ¿Actualizar Ubuntu de 10.04 a 16.04 sin cambiar la versión de Apache, Mysql y Php?

  4. Cómo cambiar la versión de PHP

  5. Cómo desinstalar Java de Ubuntu

¿Cómo ver la salida de un script PHP?

¿Cómo cambiar las directivas de PHP globalmente desde WHM en EasyApache 4?

¿Cómo cambiar la versión de PHP desde cPanel?

¿Cómo cambiar la versión de PHP de su sitio web desde SolidCP?

Seleccione la versión de PHP en cPanel

Cambiar la versión de PHP