phpMyAdmin und Roundcube unter FPM ohne PHP Modul mit HTTP2. Das war heute die Tagesaufgabe und es hat geklappt. Normalerweise arbeiten phpMyAdmin und Roundcube unter mod_php. Da ich auf HTTP2 umgestellt habe und der Apache unter MPM_event läuft, musste mod_php weichen. Es gibt keine Option, das PHP kann als Modul nicht mehr laufen!
Das Problem ist, das Roundcube und phpMyAdmin als Modul laufen wollen. Das sieht dann etwa so aus in der Apache Konfiguration:
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Alles anzeigen
Da wir .. hoffentlich schon auf den MPM_Event umgestellt haben, geht das natürlich nicht mehr.
Deswegen muss das erstmal aus der Apache Konfiguration raus. Das geht mit folgenden Befehlen:
Die Konfigurationen sind nun raus, phpMyAdmin und Roundcube gehen natürlich immer noch nicht. Dazu müssen wir die VHost Datei anpassen und folgendes ergänzen, optimal mit SSL gesichert und auf den Hostnamen wäre optimal.
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Alias /webmail /var/lib/roundcube
<Directory /var/lib/roundcube/>
Options +FollowSymLinks
# This is needed to parse /var/lib/roundcube/.htaccess. See its
# content before setting AllowOverride to None.
AllowOverride All
<IfVersion >= 2.3>
Require all granted
</IfVersion>
<IfVersion < 2.3>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
# Protecting basic directories:
<Directory /var/lib/roundcube/config>
Options -FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/lib/roundcube/temp>
Options -FollowSymLinks
AllowOverride None
<IfVersion >= 2.3>
Require all denied
</IfVersion>
<IfVersion < 2.3>
Order allow,deny
Deny from all
</IfVersion>
</Directory>
<Directory /var/lib/roundcube/logs>
Options -FollowSymLinks
AllowOverride None
<IfVersion >= 2.3>
Require all denied
</IfVersion>
<IfVersion < 2.3>
Order allow,deny
Deny from all
</IfVersion>
</Directory>
Alles anzeigen
Damit geht es theoretisch schon. Doch es gibt so einige Fallstricke. Wenn HTTP2 schon läuft, sollte man sicher sein das auch FPM in der Konfiguration läuft. Da habe ich sehr lange für gebraucht, das zu raffen, es ist notwendig das
ausgeführt wird und auch läuft. ACHTUNG: Das gilt nur für PHP 7.2!
Danach noch den Apachen neu starten über:
Wie HTTP2 aktiviert wird, steht hier: https://seo-nw.de/forum/hosting-…8-04-aktivieren
Viel Spass. Es sollte funktionieren und auch mit HTTP2 laufen.