Saya mengalami masalah berikut pada host menggunakan Apache 2.2.22 + PHP 5.4.0
Saya perlu memberikan file /home/server1/htdocs/admin/contents.php
ketika pengguna membuat permintaan:, http://server1/admin/contents
tapi saya mendapatkan pesan ini di server error_log.
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Perhatikan bahwa saya telah mod_negotiation
mengaktifkan dan MultiViews di antara opsi untuk virtualhost terkait:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Saya juga menggunakan mod_rewrite
, dengan .htaccess
aturan berikut :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Tampaknya sangat aneh, tetapi pada kotak yang sama dengan PHP 5.3.6 digunakan untuk bekerja dengan benar. Saya hanya mencoba upgrade ke PHP 5.4.0, tetapi saya tidak bisa menyelesaikan masalah negosiasi ini. Adakah alasan mengapa Apache tidak dapat mencocokkan contents.php
ketika meminta content
(yang seharusnya dilakukan mod_negotiation)?
UPDATE: Saya perhatikan bahwa mod_negotiation berperilaku benar dengan file dengan ekstensi berbeda dari .php: jadi jika saya memiliki file bernama /admin/contents.txt, saya dapat mengaksesnya secara teratur dengan browser dengan / admin / url url. Jadi masalahnya hanya untuk file php. Adakah petunjuk tentang apa yang bisa membuat negosiasi gagal?
sumber
+MultiViews
diaktifkan, dan menghilang setelah menonaktifkannya.Jawaban:
Saya menemukan solusinya. Sangat mudah, memang. Saya lupa menyertakan yang berikut ini:
ke dalam bagian mod_mime apache ke httpd.conf
Saya disesatkan oleh fakta bahwa skrip php berfungsi dengan benar; Namun negosiasi gagal karena negosiasi mod_n hanya mencari jenis file "menarik" (dan dikenal).
sumber
Saya memiliki masalah yang sama setelah memperbarui dari Debian Squeeze ke Wheezy. The
mods-enabled/mime.conf
termasuk jenis file yang dikenal dari sistem:Masalahnya adalah
/etc/mime.types
file digantikan oleh pembaruan dan di file yang diganti, bagian PHP dikomentari. Saat mencarinya, saya menemukan:Saya harus menghapus
#
dari setiap baris yang berisi hal-hal yang relevan dengan php, kemudian menyimpan dan memulai kembali server web Apache. Itu memecahkan masalah tanpa memodifikasimime.conf
file.sumber
libapache-mod-php5
file eksekusi dengan.php
nama (sepertifilename.php.jpeg
) yang merupakan alasan asli untuk berkomentar. Lihat bugs.debian.org/589384Alih-alih memetakan
.php
ke jenis media (yang dapat memiliki implikasi keamanan, seperti yang dijelaskan dalam Debian Bug 589384 yang menonaktifkannya), Anda dapat mengonfigurasiMultiviewsMatch
untuk mencocokkan file tanpa jenis.php
, seperti yang disarankan dalam jawaban Mark Amery untuk pertanyaan serupa :sumber