. Htaccess ile (tüm alt dizinleri dahil olmak üzere) dizininde PHP devre dışı

6 Cevap php

Ben şimdi ben bir sorun yaşıyorum .. insanlar vb dosyaları, html sayfaları, upload sağlayan bir web sitesi yapıyorum. Ben böyle bir dizin yapısı vardır:

-/USERS
    -/DEMO1
    -/DEMO2
    -/DEMO3
    -/etc... (every user has his own direcory here)
-index.php
-control_panel.php
-.htaccess

Şimdi PHP devre dışı bırakmak istiyorum, ama içinde / KULLANICILAR direcories ve alt dizinleri de dahil Sunucu-tarafı etkinleştirin

Bu yapılan (ve nasıl :)) olabilir mi? Şimdiden teşekkürler.

BTW, WAMP sunucu kullanmak

6 Cevap

Alt dirs tüm erişimi devre dışı bırakmak için (güvenli) kullanın:

<Directory full-path-to/USERS>
     Order Deny,Allow
     Deny from All
 </Directory>

Doğrudan servis ediliyor sadece PHP dosyalarını engellemek istiyorsanız, o zaman yapın:

1 - Eğer (ve insanlar htaccess içinde geçersiz kılmak için izin dont '), sunucu PHP olarak tanıdığı hangi dosya uzantıları bildiğinizden emin olun. : Benim sunuculardan biri ayarlanır

# Example of existing recognized extenstions:
AddType application/x-httpd-php .php .phtml .php3

2 - uzantıları dayanarak FilesMatch (veya LocationMatch) için normal bir ifade eklemek

 <Directory full-path-to/USERS>
     <FilesMatch "(?i)\.(php|php3?|phtml)$">
            Order Deny,Allow
            Deny from All
    </FilesMatch>
 </Directory>

Ya da (Ben yukarıdaki dosyaları yaklaşım tercih) Location php dosyalarını eşleştirmek için kullanabilirsiniz

<LocationMatch "/USERS/.*(?i)\.(php3?|phtml)$">
     Order Deny,Allow
     Deny from All
</LocationMatch>

Eğer mod_php'yi kullanıyorsanız, size (KULLANICILAR dizini için de / KULLANICILARI bir. Htaccess veya httpd.conf ya) koyabilirsiniz

RemoveHandler .php

veya

RemoveType .php

(depending on whether PHP is enabled using AddHandler veyaAddType)

Bu Apache üzerinden gitmez çünkü başka bir dizinden çalıştırmak PHP dosyaları, hala / KULLANICILARI (hayır open_basedir kısıtlama olmadığı varsayılarak) dosyaları dahil etmek mümkün olacak. Bir php dosyası apache kullanılarak erişilir ise düz metin olarak serverd edilecektir.

Edit

Sadece dosyalara erişimi reddetmeyi Lance en Acele çözüm muhtemelen daha iyi olduğunu

Bu yürütme yerine kaynak kodunu görüntüler:

<VirtualHost *>
    ServerName sourcecode.testserver.me
    DocumentRoot /var/www/example
    AddType text/plain php
</VirtualHost>

Ben kaynak kodu (sadece hızlı bir alternatif) okuma erişimi olan diğer ortak çalışanlar etkinleştirmek için kullanılır.

Bu overkill olabilir - ama PHP dosyalarının uzantısı dayanır şey yapıyor dikkatli olmak .php - Ne birisi daha sonra birlikte geliyor ve .php4 ya da {[(2 işleyicileri ekler )]} yüzden PHP ile ele konum. Apache veya sadece statik içerik sunar şey, farklı bir örneği bu dizinlere üzerinden dosyalara hizmet daha iyi olabilir.

Bu deneyin;] ('Googlin saat sonra)

    <FilesMatch "\.((php[0-9]?)|p?html?|pl|sh|java|cpp|c|h|js|rc)$">
    SetHandler None
    </FilesMatch>