Frage Aushandlung der Apache-Datei fehlgeschlagen


Ich habe das folgende Problem auf einem Host mit Apache 2.2.22 + PHP 5.4.0

Ich muss die Datei bereitstellen /home/server1/htdocs/admin/contents.php wenn ein Benutzer die Anfrage macht: http://server1/admin/contents, aber ich erhalte diese Nachricht auf dem Server error_log.

Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)

Beachten Sie, dass ich habe mod_negotiation aktiviert und MultiViews unter den Optionen für den zugehörigen virtuellen Host:

<Directory "/home/server1/htdocs">
    Options Indexes Includes FollowSymLinks MultiViews
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>

Ich benutze auch mod_rewrite, mit den folgenden .htaccess Regeln:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>

Es scheint sehr seltsam, aber auf der gleichen Box mit PHP 5.3.6 hat es richtig funktioniert. Ich versuche gerade ein Upgrade auf PHP 5.4.0, aber ich kann dieses Verhandlungsproblem nicht lösen. Irgendeine Idee warum Apache nicht zusammenpassen kann contents.php wenn Sie darum bitten content (Was sollte Mod_Negotiation sein?)

AKTUALISIEREN: Ich habe bemerkt, dass sich mod_negotiation bei Dateien mit einer anderen Erweiterung als .php korrekt verhält: Wenn ich also eine Datei namens /admin/contents.txt habe, kann ich regelmäßig auf den Browser mit der URL / admin / contents zugreifen. Also das Problem ist nur für PHP-Dateien. Irgendwelche Hinweise darauf, was die Verhandlung zum Scheitern bringen könnte?


21
2018-03-23 13:44


Ursprung


Wie konfigurierst du mod_negotiation? Benutzt du es? - Mircea Vutcovici
Nun, ich habe nur mod_nevertiation in httpd.conf, dann sollten die MultiViews Optionen im VirtualHost ausreichen, um das zu tun, wonach ich suche, soweit ich weiß. - lorenzo.marcon
FWIW, ich hatte dieses Problem mit +MultiViews aktiviert, und es verschwand, nachdem es deaktiviert wurde. - Felix Frank


Antworten:


Ich habe die Lösung gefunden. Sehr einfach. Ich habe folgendes vergessen:

AddType application/x-httpd-php .php

in Apache mod_mime Abschnitt in httpd.conf

Ich wurde durch die Tatsache irregeführt, dass PHP-Skripte korrekt funktionierten; Die Verhandlung scheiterte jedoch, weil mod_nevertiation nur nach "interessanten" (und bekannten) Dateitypen sucht.


38
2018-03-24 17:20



Diese! Das hier HIER! Verbrachte den größten Teil der Nacht damit zu jagen, warum ich den sehr unwichtigen Fehler "Discovered File (s) / None Negotiated" bekam. Skripte hatten vorher gut funktioniert, und ich hatte eine Menge Zeit damit, herauszufinden, dass der Typ nicht in mod_mime in der Distribution enthalten war, auf der ich gerade getestet habe. Ich schulde dir ein Bier, Sir. - Akoi Meexx
Ich werde dein Bier gerne annehmen, wenn ich nach USA komme :) - lorenzo.marcon
das funktioniert perfekt !! @ lorenzo.marcon danke für die Frage und Antwort! - Roger Câmara
Das muss sich irgendwann geändert haben. Ich bin ziemlich zuversichtlich, dass ich das nicht früher hinzufügen musste, damit php MultiViews funktioniert. - user1338062
Danke eine Tonne! Ich schlug meinen Kopf gegen die Wand und fragte mich, warum mein Mod, der von Search /? $ In search.php geschrieben wurde, nicht funktionierte. Scheint, dass das Verhandlungsmodul Vorrang vor dem Wiederbeschreibungsmodul hat, was allgemein gut zu wissen ist. - zıəs uɐɟəʇs


Ich hatte das gleiche Problem nach dem Update von Debian Squeeze zu Wheezy. Das mods-enabled/mime.conf enthält die bekannten Dateitypen aus dem System:

TypesConfig /etc/mime.types

Das Problem war, dass die /etc/mime.types Datei wurde durch das Update ersetzt und in der ersetzten Datei wurde der PHP-Teil auskommentiert. Als ich danach suchte, fand ich:

#application/x-httpd-php                        phtml pht php
#application/x-httpd-php-source                 phps
#application/x-httpd-php3                       php3
#application/x-httpd-php3-preprocessed          php3p
#application/x-httpd-php4                       php4
#application/x-httpd-php5                       php5

Ich musste das entfernen # Von jeder Zeile mit php-relevanten Inhalten speichern und starten Sie den Apache-Webserver neu. Das hat das Problem gelöst, ohne das zu modifizieren mime.conf Datei.


12
2018-01-11 06:59



Dies rettete mich nach 4 Stunden der endlosen Fehlersuche gegen einen Geist. - MarkSkayff