27 votos

Apache archivo de error de negociación

Estoy teniendo el siguiente problema en un servidor con Apache 2.2.22 + PHP 5.4.0

Necesito proporcionar el archivo /home/server1/htdocs/admin/contents.php cuando un usuario hace la petición: http://server1/admin/contents, pero puedo obtener este mensaje en el servidor error_log.

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

Aviso que tengo mod_negotiation habilitado y Multiview entre las opciones para los relacionados con el virtualhost:

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

También el uso de mod_rewrite, con el siguiente .reglas htaccess: RewriteEngine On RewriteBase /

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

Parece muy extraño, pero en el mismo cuadro con PHP 5.3.6 se utiliza para que funcione correctamente. Sólo estoy tratando de una actualización de PHP 5.4.0, pero no puedo resolver esta negociación problema. Cualquier idea sobre el por qué de Apache no puede coincidir contents.php a la hora de pedir content (que debería ser lo que mod_negotiation se debe hacer)?

ACTUALIZACIÓN: me di cuenta de que mod_negotiation se comporta correctamente con archivos con extensión diferente .php: así que si me gustaría tener un archivo llamado /admin/contents.txt puedo acceder a ella regularmente con el navegador con la url /admin/contenido de la url. Así que el problema es sólo para archivos de php. Alguna pista sobre lo que podría hacer que la negociación no?

45voto

lorenzo.marcon Puntos 482

He encontrado la solución. Muy fácil, de hecho. Se me olvidó incluir los siguientes:

AddType application/x-httpd-php .php

en apache mod_mime sección en httpd.conf

Estaba confundido por el hecho de que los scripts php se esté trabajando correctamente; sin embargo, la negociación estaba fallando porque mod_negotiation sólo busca "interesante" (y conocido) de tipos de archivo.

12voto

derHippeChip Puntos 41

Yo tenía el mismo problema después de la actualización de Debian Squeeze a Wheezy. El mods-enabled/mime.conf incluye los tipos de archivo conocidos del sistema:

TypesConfig /etc/mime.types

El problema era que el /etc/mime.types archivo fue sustituida por la actualización y en el archivo reemplazado, el PHP parte fue comentado. Cuando buscando, he encontrado:

#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

Tuve que quitar el # de cada línea que contiene php relevante cosas, a continuación, guardar y reiniciar el servidor web Apache. Que resolver el problema sin necesidad de modificar el mime.conf archivo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: