ubuntuusers.de

Apache2 und PHP FPM rewrite Problem

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Jaiprucl

Anmeldungsdatum:
16. März 2017

Beiträge: 12

Hi,

ich wende ich an euch, weil ich einfach nicht mehr weiter weiß.

Folgendes Szenario: Ich Habe einen Apache Server auf dem mehrere PHP Versionen laufen sollen, die ich über Virtual Sites anspreche. Das klappt auch soweit super.. meine Config Dateien sehen alle so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<VirtualHost *:80>
        ServerName test.local
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/test/docroot
        ErrorLog /var/log/apache2/test.local_error.log
        LogLevel warn
        CustomLog /var/log/apache2/access_error.log combined
        ServerSignature On
        ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php7.2-fpm.sock|fcgi://localhost/var/www/html/test.local
</VirtualHost>

Klappt auch top, die PHP Version die ich anspreche, nimmt er auch..

Aber!!!

Ich kriege alle Module zum laufen, nur das wichtigste nicht: rewrite.

Was habe ich bisher gemacht : 1.

1
sudo a2enmod rewrite

Ausgabe:

1
Module rewrite already enabled

In der phpinfo steht aber was anderes.

2. 000-default.conf bearbeitet und .htaccess im Root Verzeichenis abgelegt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /var/www/html/>
          Options +Indexes +FollowSymLinks +Multiviews
          AllowOverride All
          Require all granted
        </Directory>

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

- .htaccess erstelle mit RewriteEngine On und Berechtigung erteilt

Erfolglos.

Ich weiß einfach nicht weiter.. sämtlich Tips aus dem Internet, sinnlos.

hat einer eine Idee?

Viele Grüße

Christopher

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Jaiprucl schrieb:

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

Ich nutze immer die Handler-Funktionalität, damit auch Umgebungsvariablen gesetzt werden können, etc:

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

Das hat einfach was mit der Abarbeitungs-Reihenfolge zu tun – ProxyPassMatch kommt dabei relativ weit vorn, was zu Probleme führen kann.

Ich kriege alle Module zum laufen, nur das wichtigste nicht: rewrite.

Was genau ist das Problem?

Ausgabe:

1
Module rewrite already enabled

In der phpinfo steht aber was anderes.

Woher soll PHP denn das mod_rewrite-Modul kennen? mod_rewrite ist ein Apache2-Modul.

- .htaccess erstelle mit RewriteEngine On und Berechtigung erteilt

Erfolglos.

Erfolglos ist keine Fehlerbeschreibung. Was genau geht nicht? Hast du mal das Logging angeschaltet? (Siehe dazu.)

Jaiprucl

(Themenstarter)

Anmeldungsdatum:
16. März 2017

Beiträge: 12

misterunknown schrieb:

Jaiprucl schrieb:

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

Ich nutze immer die Handler-Funktionalität, damit auch Umgebungsvariablen gesetzt werden können, etc:

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

Das hat einfach was mit der Abarbeitungs-Reihenfolge zu tun – ProxyPassMatch kommt dabei relativ weit vorn, was zu Probleme führen kann.

Das ist schon ein ganz guter Ansatz, aber ich war halt erst einmal froh, dass es so lief und wollte jetzt nicht wieder einen anderen Weg gehen.

Ich kriege alle Module zum laufen, nur das wichtigste nicht: rewrite.

Was genau ist das Problem?

Naja, ich dachte das wäre offensichtlich. Rewrite ist auf meinen Virtual Sites nicht aktiv, auch wenn es im Apache aktiviert ist.

Ausgabe:

1
Module rewrite already enabled

In der phpinfo steht aber was anderes.

Woher soll PHP denn das mod_rewrite-Modul kennen? mod_rewrite ist ein Apache2-Modul.

Ich sagte auch nicht, dass PHP das kennt, sondern lediglich, dass es in der phpinfo steht, wenn das mod_rewrite Modul geladen wurde und das tut es eben nicht.

- .htaccess erstelle mit RewriteEngine On und Berechtigung erteilt

Erfolglos.

Erfolglos ist keine Fehlerbeschreibung. Was genau geht nicht? Hast du mal das Logging angeschaltet? (Siehe dazu.)

In mehreren Beschreibung wurde der Hinweis gegeben, dass im Root Verzeichnis eine .htaccess mit dem Inhalt "RewriteEngine On" eingepflegt werden soll, damit das man auf das rewrite modul zugreifen kann, aber auch das war erfolglos.

Log Level

1
LogLevel warn mod_rewrite.c:trace4

Gab auch keinen Fehler aus.

Danke vorab für deine Hilfe.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Jaiprucl schrieb:

Das ist schon ein ganz guter Ansatz, aber ich war halt erst einmal froh, dass es so lief und wollte jetzt nicht wieder einen anderen Weg gehen.

Offenbar läuft es ja nicht.

Naja, ich dachte das wäre offensichtlich. Rewrite ist auf meinen Virtual Sites nicht aktiv, auch wenn es im Apache aktiviert ist.

Doch es ist aktiv. Siehe die Meldung "is already enabled".

Ich sagte auch nicht, dass PHP das kennt, sondern lediglich, dass es in der phpinfo steht, wenn das mod_rewrite Modul geladen wurde und das tut es eben nicht.

Ja, das ist klar, da PHP mit FPM niemals weiß, welche entsprechenden Module im Webserver geladen sind. Das sind zwei völlig verschiedene Sachen.

In mehreren Beschreibung wurde der Hinweis gegeben, dass im Root Verzeichnis eine .htaccess mit dem Inhalt "RewriteEngine On" eingepflegt werden soll, damit das man auf das rewrite modul zugreifen kann, aber auch das war erfolglos.

Wie genau willst du denn "auf das Modul zugreifen"? Hast du irgendwelche Rules, die nicht funktionieren? Du musst dir klar machen, dass mod_rewrite absolut nichts mit PHP zu tun hat.

Es wäre aber vielleicht eher die Frage angebracht: Was willst du eigentlich erreichen?

Jaiprucl

(Themenstarter)

Anmeldungsdatum:
16. März 2017

Beiträge: 12

misterunknown schrieb:

Jaiprucl schrieb:

Das ist schon ein ganz guter Ansatz, aber ich war halt erst einmal froh, dass es so lief und wollte jetzt nicht wieder einen anderen Weg gehen.

Offenbar läuft es ja nicht.

Naja, ich dachte das wäre offensichtlich. Rewrite ist auf meinen Virtual Sites nicht aktiv, auch wenn es im Apache aktiviert ist.

Doch es ist aktiv. Siehe die Meldung "is already enabled".

Ich sagte auch nicht, dass PHP das kennt, sondern lediglich, dass es in der phpinfo steht, wenn das mod_rewrite Modul geladen wurde und das tut es eben nicht.

Ja, das ist klar, da PHP mit FPM niemals weiß, welche entsprechenden Module im Webserver geladen sind. Das sind zwei völlig verschiedene Sachen.

Aha, das erklärt doch schon so einiges.

In mehreren Beschreibung wurde der Hinweis gegeben, dass im Root Verzeichnis eine .htaccess mit dem Inhalt "RewriteEngine On" eingepflegt werden soll, damit das man auf das rewrite modul zugreifen kann, aber auch das war erfolglos.

Wie genau willst du denn "auf das Modul zugreifen"? Hast du irgendwelche Rules, die nicht funktionieren? Du musst dir klar machen, dass mod_rewrite absolut nichts mit PHP zu tun hat.

Mir ist klar, dass das nichts mit PHP zu tun hat, habe ich ja auch nie gesagt 😉

Es wäre aber vielleicht eher die Frage angebracht: Was willst du eigentlich erreichen?

Stimmt vielleicht kann das etwas das durcheinander lösen. Ich will einen OXID Testshop aufsetzen um ein wenig Module entwickeln zu können.

Aber der meldet bei der Installation immer :

https://www.imagebanana.com/s/1417/ET8nwo0Q.html

Aber wenn, wie du schon sagst per FPM PHP keine Info hat welche Module geladen wurden, könnte der Hund hier schon begraben sein.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Jaiprucl schrieb:

Stimmt vielleicht kann das etwas das durcheinander lösen. Ich will einen OXID Testshop aufsetzen um ein wenig Module entwickeln zu können.

Aber der meldet bei der Installation immer :

https://www.imagebanana.com/s/1417/ET8nwo0Q.html

Aber wenn, wie du schon sagst per FPM PHP keine Info hat welche Module geladen wurden, könnte der Hund hier schon begraben sein.

Hast du zufällig eine Basic Auth konfiguriert? Das könnte das Problem sein.

Antworten |