XAMPP / Apache hizmet dosyasını htdocs dışında yap [kapalı]


304

Xampp'ihtdocs dizinin dışında bir dosya sunacak şekilde yapılandırmak mümkün mü ?

Örneğin, aşağıdaki gibi bir dosyam olduğunu varsayalım:

C:\projects\transitCalculator\trunk\TransitCalculator.php

ve xampp dosyalarım normalde şu kişilerden sunulur:

C:\xampp\htdocs\

(çünkü bu varsayılan yapılandırmadır) Apache'nin TransitCalculator.phpdosyayı taşımadan tanımasını ve sunmasını sağlamanın bir yolu var mı htdocs? Tercihen Apache'nin proje dizininin tüm içeriğine erişmesini / erişmesini istiyorum ve projeler dizini altına taşımak istemiyorum htdocs.

edit: Soru-Cevap daha "aranabilir" yapmak için soru başlığına Apache eklemek için düzenlendi


1
Etiketler yeterince aranabilir olmalı diye düşünüyorum.
icedwater

24
Bu soru kapatılmamalıydı. Bu bir XAMPP sorusudur. Bu bir geliştirici sorusu.
Andrew Koper

15
Andrew Koper, katılıyorum, ama bu noktada yığın değişim ekosisteminde endemik olan ağır el düşmanlığı seviyesi ile şaşırtıcı değil. ¯_ (ツ) _ / ¯
cmcculloh

Konu dışı maby, ama sadece ipucu istiyorum: Bazen bir seçenek yerine "htdocs" klasörüne dizinleri taşımaktır örn. dosyaları yerel sürücüde Google Drive'da açabilmek istiyorsanız;) ( stackoverflow.com/questions/41751330/… )
Gordova

2
Tüm cevapların yanı sıra bir tane daha eklemek istiyorum. PHP 5.4.0 ve sonrasında, komut satırını kullanarak proje köküne geçebilir ve yürütebilirsiniz php -S <host>:<port>. Örneğin php -S localhost:80.
radiantshaw

Yanıtlar:


362

Tamam, pix0r , Sparks ve Dave'in cevaplarına göre bunu yapmanın üç yolu var gibi görünüyor:


Sanal Ana Makineler

  1. C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf dosyasını açın.
  2. Yorum bırak ~ satır 19 ( NameVirtualHost *:80).
  3. Sanal ana makinenizi ekleyin (~ satır 36):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
  4. Hosts dosyanızı açın (C: \ Windows \ System32 \ drivers \ etc \ hosts).

  5. Ekle

    127.0.0.1 transitcalculator.localhost #transitCalculator

    dosyanın sonuna kadar (yüklüyse Spybot - Search & Destroy'dan önce).

  6. Kaydet (kullanıyorsanız, masaüstüne kaydetmeniz, eski ana makineler dosyasındaki izinleri değiştirmeniz (sağ tıklama> özellikler) ve kullanıyorsanız yenisini eskisinin üzerine dizine kopyalamanız (veya eskisini yeniden adlandırmanız) gerekebilir. Vista ve sorun var).
  7. Apache'yi yeniden başlatın.

Artık bu dizine http: //transitcalculator.localhost/ adresine giderek erişebilirsiniz .


Takma Ad Yap

  1. http.confDosyanızın ~ 200 satırından başlayarak <Directory "C:/xampp/htdocs">ve </Directory>(~ line 232) arasına her şeyi kopyalayın ve sunucunuza yeni dizin için doğru izinleri vermek üzere hemen C:/xampp/htdocsistediğiniz dizine (bu durumda C:/Projects) değiştirilir.

  2. <IfModule alias_module></IfModule>Bölümü bulun (~ çizgi 300) ve ekleyin

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"

    (veya isteklerinizle alakalı olanları) Aliasyorum bloğunun altında , modül etiketlerinin içinde.


Belge kökünüzü değiştirme

  1. C: \ xampp \ apache \ conf \ httpd.conf dizinindeki ~ 176 numaralı satırı düzenleyin; değişim DocumentRoot "C:/xampp/htdocs"için #DocumentRoot "C:/Projects"(ya da her ne istiyorum).

  2. ~ Line 203'ü yeni konumunuza uyacak şekilde düzenleyin (bu durumda C:/Projects).


Notlar:

  • Eğik çizgi "\" yerine "/" eğik çizgi kullanmalısınız.
  • Sondaki "/" sonunu eklemeyin.
  • sunucunuzu yeniden başlatın .

13
(3) adımında C: \ Windows \ System32 \ drivers \ etc \ ana bilgisayarlarını düzenlemek için. İlk önce Editör'ü (Not Defteri, Not Defteri ++ veya herhangi bir düzenleyici) Yönetici olarak çalıştırmak için en iyi uygulama. Böylece doğrudan C: \ Windows \ System32 \ drivers \ etc \ klasörüne kaydedebilirsiniz.
CallMeLaNN

3
403 hataları alırsanız bu bağlantıya
Wojtek Owczarczyk

21
Order allow komutunu kullanarak, Win7'deki herkesten izin ver seçeneğini reddet, çünkü bu seçenekler kullanımdan kaldırıldı. Tümü iste iste. stackoverflow.com/questions/9110179/…
hywak

4
Sadece FYI, bu adım benim için gerekli görünmüyordu: Yorum satır 19 (NameVirtualHost *: 80)
Silverback

2
Kullanmak Order allow,deny Allow from allbenim için işe yaramadı, ama Require all grantedişe yaradı.
Danny Beckett

96

XAMPP \ apache \ conf \ httpd.conf'da DocumentRoot ayarını düzenleyerek yeniden konumlandırabilirsiniz .

Şu anda olmalıdır:

C: / xampp / htdocs

Bunu şu şekilde değiştirin:

C: / projeler / transitCalculator / gövde


40
DocumentRoot isteyen her iki satırda da düzenlemeyi unutmayın. Yalnızca
ilkini

2
bu XAMP mac için de geçerlidir?
kızgın kivi

Şimdi hangi URL ile dizin sayfasına erişebilir?
Manish Kumar

49

Bir VirtualHost da bunun için işe yarayabilir ve alt dizinlere ihtiyaç duymadan birkaç projeyi barındırabileceğiniz için sizin için daha iyi çalışabilir. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

httpd.conf (veya httpd.conf'a göre ekstra \ httpd-vhosts.conf. "\" sondaki eğik çizgiler çalışmamasına neden olabilir):

NameVirtualHost *:80
# ...
<VirtualHost *:80>  
    DocumentRoot C:\projects\transitCalculator\trunk\
    ServerName transitcalculator.localhost
    <Directory C:\projects\transitCalculator\trunk\>  
        Order allow,deny  
        Allow from all  
    </Directory>
</VirtualHost> 

HOSTS dosyası (genellikle c: \ windows \ system32 \ drivers \ etc \ hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

Şimdi XAMPP'yi yeniden başlatın ve http: //transitcalculator.localhost/ adresine erişebilmeniz gerekir ve doğrudan bu dizine eşlenir .

Bir etki alanı adının köküne oturacak bir site geliştirdiğiniz bir üretim ortamını çoğaltmaya çalışıyorsanız bu yardımcı olabilir. Örneğin, sunucuya taşınacak mutlak yolları olan dosyaları işaret edebilirsiniz:

<img src="/images/logo.png" alt="My Logo" />

diğer adları veya alt dizinleri kullanan bir ortamda, "images" dizininin geçerli dosyayla tam olarak nerede olduğunu izlemeniz gerekir.


Bilgisayarımda harflerle (ör. X:\myfolder) Eşlenmiş birkaç ağ sürücüm var . Bu yöntemi kullandığımda "Erişim Yasak" uyarısı alıyorum. Bu Apache kullanıcısının sürücüye okuma erişimi olmadığı anlamına mı geliyor?
harryg

1
Altında ve ile Directorydeğiştirin . Bkz. Stackoverflow.com/questions/9110179/…Order allow,denyAllow from allRequire all granted
Michiel

16

Apache'yi herhangi bir kısıtlama ile her yerden sayfa sunacak şekilde ayarlayabilirsiniz, ancak normalde daha güvenli bir biçimde dağıtılır.

Apache dosyalarınızı düzenlemek (http.conf daha yaygın adlardan biridir), herhangi bir klasörü web kökünüzde görünecek şekilde ayarlamanızı sağlar.

DÜZENLE:

takma ad myapp c: \ myapp \

Cevabımı, http.conf dosyasında, Windows'ta bir kısayol veya Apache'nin bir klasörün webroot'ta olduğu gibi göründüğü un * x altında bir simge bağlantısı gibi bir takma ad oluşturma biçimini içerecek şekilde düzenledim. Bu muhtemelen uzun vadede sizin için daha yararlı olacaktır.


10

XAMPP'yi bir ağ sürücüsünü belge kökü olarak kullanmaya çalışıyorsanız, httpd.conf dosyasında UNC yollarını kullanmanız gerekir. XAMPP eşlenen ağ sürücülerinizi tanımaz.

Örneğin, aşağıdakiler çalışmaz, DocumentRoot "X: / webroot"

Ancak bu, DocumentRoot "//192.168.10.100/webroot" olacaktır (eğik çizgilere değil, eğik çizgilere dikkat edin)


Eşlenen ağ sürücümle iyi çalışıyor.
Sean Kendle

7

Apache 2'nin htdocs dışındaki web sitelerini barındırmasına izin veren çözüm:

Httpd.conf dosyasındaki "DocumentRoot" yönergesinin altında bir dizin bloğu görmelisiniz. Bu dizin bloğunu aşağıdaki ile değiştir:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

BU YAPILANDIRMAYI GERÇEK BİR ORTAMDA KULLANMAYI UNUTMAYIN


Yalnızca sembolik bağlantıları destekleyen dosya sistemleri için çalışır. Bu seçeneğin neden kullanılmaması gerektiği hakkında bir açıklama yok.
Danubian Sailor
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.