अपाचे फ़ाइल बातचीत विफल रही


23

मैं Apache 2.2.22 + PHP 5.4.0 का उपयोग कर एक होस्ट पर निम्न समस्या कर रहा हूँ

/home/server1/htdocs/admin/contents.phpउपयोगकर्ता द्वारा अनुरोध http://server1/admin/contentsकरने पर मुझे फ़ाइल प्रदान करने की आवश्यकता होती है : लेकिन मुझे यह संदेश सर्वर error_log पर प्राप्त होता है।

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

ध्यान दें कि मैंने mod_negotiationसंबंधित वर्चुअलहोस्ट के विकल्पों के बीच सक्षम और मल्टीव्यूज:

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

मैं mod_rewriteनिम्नलिखित .htaccessनियमों के साथ भी उपयोग करता हूं :

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

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

यह बहुत अजीब लगता है, लेकिन PHP 5.3.6 के साथ एक ही बॉक्स पर यह सही ढंग से काम करता था। मैं सिर्फ PHP 5.4.0 के लिए एक उन्नयन की कोशिश कर रहा हूँ, लेकिन मैं इस बातचीत के मुद्दे को हल नहीं कर सकता। अपाचे का मिलान contents.phpकरते समय कोई भी विचार क्यों नहीं हो contentसकता है (जो होना चाहिए mod_negotiation क्या करना चाहिए)?

अद्यतन: मैंने देखा कि mod_negotiation .php से भिन्न एक्सटेंशन वाली फ़ाइलों के साथ सही व्यवहार करता है: इसलिए यदि मेरे पास /admin/contents.txt नाम की कोई फ़ाइल है, तो मैं इसे ब्राउज़र के साथ / व्यवस्थापक / सामग्री url के साथ नियंत्रित कर सकता हूं। तो समस्या केवल php फ़ाइलों के लिए है। क्या बातचीत विफल हो सकती है इस पर कोई सुराग?


आप mod_negotiation कैसे कॉन्फ़िगर करते हैं? क्या आप इसका उपयोग कर रहे हैं?
सिरसा वुटकोविसी

वैसे मैं बस http_negotiation को httpd.conf में शामिल करता हूं, फिर VirtualHost में मल्टीव्यूज़ विकल्प वही करने के लिए पर्याप्त होना चाहिए जो मैं देख रहा हूँ, जहाँ तक मुझे पता है .. है ना?
lorenzo.marcon

3
एफडब्ल्यूआईडब्ल्यू, मुझे +MultiViewsसक्षम होने के साथ यह समस्या थी , और इसे अक्षम करने पर यह गायब हो गया।
फेलिक्स फ्रैंक

जवाबों:


39

मुझे इसका हल मिल गया। बहुत आसान है, वास्तव में। मैं निम्नलिखित को शामिल करना भूल गया:

AddType application/x-httpd-php .php

अपाचे mod_mime सेक्शन में httpd.conf

मुझे इस तथ्य से गुमराह किया गया था कि php स्क्रिप्ट सही ढंग से काम कर रहे थे; हालाँकि बातचीत विफल हो रही थी क्योंकि mod_negotiation केवल "दिलचस्प" (और ज्ञात) फ़ाइल प्रकारों के लिए दिखता है।


3
यह! यह सही है यहाँ! रात का अधिकांश समय व्यतीत करने के कारण मुझे बहुत ही बेकार "खोजा हुआ फ़ाइल (ओं) / कोई नहीं वार्ता" त्रुटि हो रही थी। लिपियों से पहले ठीक काम कर रहा था, और मेरे पास इस तथ्य पर नज़र रखने वाले समय का एक शैतान था कि जिस प्रकार मैं परीक्षण कर रहा था उस वितरण में mod_mime में शामिल नहीं किया गया था। मैं तुम्हें एक बीयर साहब देना चाहता हूँ।
एकोई Meexx

जब मैं यूएस
आऊंगा

यह पूरी तरह से काम करता है !! @ lorenzo.marcon सवाल और जवाब के लिए धन्यवाद!
rogcg

यह कुछ बिंदु पर बदल गया होगा। मुझे बहुत विश्वास हो रहा है कि मुझे php MultiViews के काम करने के लिए पहले इसे जोड़ने की आवश्यकता नहीं थी।
user1338062

धन्यवाद एक मीट्रिक टन! मैं दीवार के खिलाफ अपना सिर पीट रहा था, सोच रहा था कि खोज से मेरा मॉड फिर से क्यों लिखता है? $ को search.php काम नहीं कर रहा था। ऐसा लगता है कि पुन: लिखने वाले मॉड्यूल पर नियोगाइटिस मॉड्यूल की पूर्वता है जो आमतौर पर जानना अच्छा है।
zı ats u's

12

मुझे डेबियन स्क्वीज़ से व्हीज़ी तक अपडेट करने के बाद भी यही समस्या थी। mods-enabled/mime.confसिस्टम से ज्ञात फ़ाइल प्रकारों में शामिल हैं:

TypesConfig /etc/mime.types

समस्या यह थी कि /etc/mime.typesफ़ाइल को अद्यतन द्वारा प्रतिस्थापित किया गया था और प्रतिस्थापित फ़ाइल में, PHP भाग को टिप्पणी दी गई थी। जब इसकी खोज की, तो मैंने पाया:

#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

मुझे #php- संबंधित सामान वाली प्रत्येक पंक्ति को हटाना था , फिर Apache वेब सर्वर को सहेजना और पुनः आरंभ करना था। यह mime.confफ़ाइल को संशोधित किए बिना समस्या को हल करता है ।


इसने 4 भूतों के खिलाफ एकजुट डिबगिंग के बाद मुझे बचाया।
मार्कसैफ

विदित हो कि ऐसा libapache-mod-php5करने .phpसे नाम (जैसे filename.php.jpeg) के साथ फाइल निष्पादित हो सकती है जो उन्हें टिप्पणी करने के लिए मूल तर्क था। Bugs.debian.org/589384
केविनोइड जूल

0

.phpएक मीडिया प्रकार की मैपिंग के बजाय (जिसमें सुरक्षा निहितार्थ हो सकते हैं, जैसा कि डेबियन बग 589384 में वर्णित है जो उन्हें अक्षम करता है), आप MultiviewsMatchएक प्रकार के बिना फ़ाइलों के मिलान के लिए कॉन्फ़िगर कर सकते हैं .php, जैसा कि मार्क अमेरी के एक समान प्रश्न के उत्तर में सुझाया गया है :

<Files "*.php">
    MultiviewsMatch Any
</Files>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.