ubuntuusers.de

phpmyadmin mit php7.0-fpm – 404/leere Seite

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

tskv

Anmeldungsdatum:
5. Oktober 2011

Beiträge: 149

Wohnort: Vaals

Hallo zusammen,

ich bin dabei, mir einen Ubuntu 16.04 Server als Heimserver einzurichten. Dazu gehört u.A. auch ein LAMP-Stack:

sudo apt install apache2 mysql-server php-mysql php-fpm
sudo a2enmod proxy_fcgi

Später möchte ich php Anwendungen per pool unter bestimmten uids ausführen lassen, zum testen habe ich aber anfangs erst mal den default host vorbereitet:

...
#ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://localhost:9000/var/www/html/$1
...

(Habe beide Varianten getestet, IP und Socket)

Dies funktioniert. Ich kann php Scripte ausführen und html Dateien sehen, im Stammverzeichnis wie auch in Unterverzeichnissen.

Dann habe ich phpmyadmin installiert, und mit dbconfig-common konfiguriert:

sudo apt install phpmyadmin php-mbstring php-gettext

Alle Apache2 und php Module sind aktiviert, und die phpmyadmin.conf ist per Symlink in /etc/apache2/conf-available gelandet, und wurde automatisch aktiviert.

Um das Setup-Script nutzen zu können:

sudo /usr/sbin/pma-configure

Jetzt müsste ich eigentlich unter http://myLocalIp/phpmyadmin/setup auf irgend etwas stoßen, aber ich sehe nur eine „File not found“ Meldung, begleitet von folgendem, kryptischen Apache Errorlog Eintrag:

[Sat Oct 22 20:13:05.510449 2016] [proxy_fcgi:error] [pid 10094:tid 140510752909056] [client 192.168.2.20:43582] AH01071: Got error 'Primary script unknown\n'

Frage ich per php Script die DB-User ab, so wird phpmyadmin aufgeführt. Gebe ich zum Test ein:

http://myLocalIp/phpmyadmin/setup/ajax.js

so bekomme ich das Javascript angezeigt. An Rechten mangelt es wohl nicht.

Unter 12.04 (mod-fcgid, suexec) und 14.04 (php5-fpm) hatte ich nie Probleme mit phpmyadmin. Diesmal scheint es unmöglich. Ich suche bereits den ganzen Tag nach einer Lösung.

EDIT1: Lege ich ins DocumentRoot einen Symlink zu /usr/share/phpmyadmin, so läuft alles:

root@myhost:/var/www/html# ln -s /usr/share/phpmyadmin/ phpmyadmin

Mir ist jedoch völlig unverständlich, warum dies einen Unterschied macht. Der Symlink scheint erforderlich, egal ob mit oder ohne gesetztem open_basedir.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

tskv schrieb:

EDIT1: Lege ich ins DocumentRoot einen Symlink zu /usr/share/phpmyadmin, so läuft alles:

root@myhost:/var/www/html# ln -s /usr/share/phpmyadmin/ phpmyadmin

Mir ist jedoch völlig unverständlich, warum dies einen Unterschied macht. Der Symlink scheint erforderlich, egal ob mit oder ohne gesetztem open_basedir.

Hast du den Apache nach der Installation von phpmyadmin neu gestartet? Wie sieht die Konfigurationsdatei von phpmyadmin unter /etc/apache2/conf-enabled aus?

tskv

(Themenstarter)

Anmeldungsdatum:
5. Oktober 2011

Beiträge: 149

Wohnort: Vaals

Das geschilderte Problem hat sich mittlerweile in Luft aufgelöst. Es klappt jetzt auch ohne Symlink. Ursächlich war das gescheiterte Lesen von /var/lib/phpmyadmin/blowfish_secret.inc.php.

Die Datei hat www-data als Gruppe, und in meinem Pool hatte ich user/group = myuser. Jetzt könnte ich entweder meinen User zur Gruppe www-data hinzufügen (besser nicht!), oder www-data zur Gruppe meines Users (besser auch nicht!). Derzeit prüfe ich geeignete Alternativen.

EDIT1: Habe jetzt im betroffenen Pool Änderungen vorgenommen:

user = myUser
group = www-data (vorher: myUser)

listen.owner = myUser (vorher www-data)
listen.group = www-data

Damit scheint alles zu funktionieren - ohne Gruppenmanipulationen. Versucht man es bei php-fpm richtig zu machen, so stolpert man über miese Doku und zahllose falsche Tuts. Ich lasse das hier noch offen, um niemanden vom Kommentieren abzuschrecken.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

tskv schrieb:

Ich lasse das hier noch offen, um niemanden vom Kommentieren abzuschrecken.

Nun, jedem steht frei weiterhin zu kommentieren. Das Thema ist aber ja gelöst.

tskv

(Themenstarter)

Anmeldungsdatum:
5. Oktober 2011

Beiträge: 149

Wohnort: Vaals

Zum Abschluss: Die von mir skizzierte Lösung funktioniert - ist aber nicht der beste Weg zum Ziel. Wenn das Ziel - wie bei mir - heißt, einen dedizierten Vhost für alles Administrative zu nutzen (phpmyadmin, postfixadmin, fpm-status, apache2-status... ein Vhost, der auf einem Live-Server nur aktiviert wird, wenn es etwas zu administrieren gibt), so ist es wesentlich einfacher, dafür den default fpm-pool www.conf zu nutzen (mit der Änderung auf 'ondemand', Sockets und angepassten php.ini Direktiven). Besteht der "demand" nicht, so ist der ganze Server per a2dissite lahm gelegt. So bleiben Pakete aus der Distribution unverändert und beliebig upgrade- fähig. Die apache.conf der jeweiligen Webanwendung (z.B. phpmyadmin) wird allgemein deaktiviert, und nur in diesem Vhost aus /etc/apache2/conf-available eingebunden.

Die Nutzlast, also die eigentlichen php Webanwendungen, laufen dann auf einem oder mehreren separaten Pools unter einem/verschiedenen dedizierten User(n), der/die ausschließlich auf seinen Vhost zugreifen kann. Kein Chroot, aber dennoch weitgehende Sicherheit gegen Zugriff auf fremde Daten. Ergänzt natürlich um ein restriktives open_basedir.

Für noch bessere Ideen bleibe ich natürlich offen ☺

Antworten |