Apache dosya anlaşması başarısız oldu


23

Apache 2.2.22 + PHP 5.4.0 kullanarak bir ana bilgisayarda aşağıdaki sorunu yaşıyorum

/home/server1/htdocs/admin/contents.phpBir kullanıcı isteğinde bulunduğunda dosyayı vermem gerekiyor :, http://server1/admin/contentsancak bu mesajı error_log sunucusunda buldum.

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

mod_negotiationİlgili sanal ana bilgisayardaki seçenekler arasında etkinleştirilmiş ve MultiView'ları etkinleştirdiğime dikkat edin :

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

Ayrıca mod_rewriteaşağıdaki .htaccesskuralları da kullanıyorum :

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

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

Çok garip görünüyor ama PHP 5.3.6 ile aynı kutuda düzgün çalışıyordu. Sadece PHP 5.4.0 sürümüne yükseltmeye çalışıyorum, ancak bu anlaşma sorununu çözemiyorum. Apaçi maç olamaz neden herhangi bir fikir contents.phpisterken content(ki yapmak ne mod_negotiation gerekiyordu olmalıdır)?

GÜNCELLEME :. Yani sorun sadece php dosyaları içindir. Pazarlığın başarısız olmasına neyin yol açabileceği hakkında bir ipucu var mı?


Mod_negotiation nasıl yapılandırılır? Kullanıyor musun
Mircea Vutcovici

Ben sadece mod_negotiation 'ı httpd.conf' a ekliyorum, o zaman VirtualHost'taki MultiView seçenekleri, aradığım şeyi yapmak için yeterli olmalı, bildiğim kadarıyla .. değil mi?
lorenzo.marcon

3
FWIW, bu sorunu +MultiViewsetkin olarak gördüm ve devre dışı bıraktıktan sonra ortadan kayboldu.
Felix Frank

Yanıtlar:


39

Çözümü buldum. Gerçekten çok kolay. Aşağıdakileri eklemeyi unuttum:

AddType application/x-httpd-php .php

apache mod_mime bölümüne httpd.conf içine

PHP betiklerinin doğru çalıştığı gerçeğinden yanıldım; ancak müzakere başarısız oldu çünkü mod_negotiation sadece "ilginç" (ve bilinen) dosya türlerini arıyor.


3
Bu! BURADA bu hakkı! Gecenin çoğunu neden çok yararsız bir "Keşfedilen Dosya (lar) / Yok Anlaşmalı" hatasını aldığımı avlayarak geçirdim. Scriptler daha önce iyi çalışıyordu ve türün üzerinde test ettiğim dağıtımın mod_mime içine dahil edilmediği gerçeğini izleyen bir zaman geçirmemiştim. Size bir bira borcum var efendim.
Akoi Meexx


bu mükemmel çalışıyor! @ lorenzo.marcon soru ve cevap için teşekkürler!
rogcg

Bu bir noktada değişmiş olmalı. Kendimi çok güvende hissediyorum, php MultiView'lerin çalışması için bunu daha önce eklememe gerek yoktu.
user1338062 24:13

Bir metrik ton teşekkürler! Kafamı duvara çarpıyordum, modumun neden arama /? $ 'Dan search.php' ye yeniden yazdığını merak ediyordum. Müzakere modülünün, bilmesi iyi olan yeniden yazma modülüne göre önceliği olduğu görülüyor.
Ekim 18'de

12

Debian Squeeze'den Wheezy'e güncelledikten sonra da aynı problemi yaşadım. Sistemden mods-enabled/mime.confbilinen dosya türlerini içerir:

TypesConfig /etc/mime.types

Sorun, /etc/mime.typesdosyanın güncelleme tarafından değiştirilmiş olması ve değiştirilen dosyanın PHP bölümünün yorumlanmasıydı. Onu ararken buldum:

#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

Ben #php ile ilgili şeyler içeren her satırından kaldırmak zorunda kaldı , sonra Apache web sunucusunu kaydedin ve yeniden başlatın. Bu mime.confdosyayı değiştirmeden sorunu çözdü .


Bu beni bir hayalet karşısında 4 ay boyunca kesintisiz hata ayıklamadan sonra kurtardı.
MarkSkayff

Bunu yapmanın, libapache-mod-php5dosyaları yorumlamanın orijinal gerekçesi olan .phpadında (gibi filename.php.jpeg) çalıştırabileceğini unutmayın . Bkz bugs.debian.org/589384
Kevinoid

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.