Mac OS X Lion 10.7.2 altında ~ / Sitelerim / Apache için sembolik bir bağlantıya erişime nasıl izin verilir


12

Benim Apache üzerinden ~ / Sites içinde sym bağlantılı bir dizine erişim izni gerekir. Bunun gibi dizinleri işaretledim

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

Şimdi ne zaman bir GET talebi gönderirsem 403 cevabı alıyorum

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

Apache'ye sembolik dizine erişime izin vermesini nasıl söyleyebilirim ve Apache'ye bunu yalnızca localhost'tan gelen istekler için izin vermesini nasıl söyleyebilirim.

Herhangi bir yardım büyük beğeni topluyor.

Saygılarımla

robertj

Yanıtlar:


10

İşte tam olarak ne yapmaya çalıştığınızı anlamaya çalışırken yazdığım bir blog yazısı .

  1. Sistem Tercihleri ​​-> Paylaşım -> Web Paylaşımını Etkinleştir seçeneğini işaretleyerek MAC üzerinde Web Paylaşımını etkinleştirin
  2. / Private / etc / apache2 / users adresinde bulunan username.conf dosyanızı düzenleyin ve “FollowSymLinks” yönergesini ekleyin:

    <"/ Kullanıcılar / KullanıcıAdınız / Siteler /" Dizini>
        Seçenekler Dizinler MultiViews FollowSymLinks
        Geçersiz Kılmaya İzin Ver Yok
        Sipariş ver, reddet
        Herkesten izin ver
    </ Directory>
    
  3. /Private/etc/apache2/httpd.conf dosyasını düzenleyin ve “# Sanal ana makineler” altındaki satırın şu şekilde yorumlanmadığından emin olun:

    /Private/etc/apache2/extra/httpd-vhosts.conf dosyasını dahil et
    
  4. /Private/etc/apache2/extra/httpd-vhosts.conf dosyasını düzenleyin ve ekleyin:

    <VirtualHost *: 80>  
        <Directory /Users/yourUserName/Sites/MyWebSite.com>
            Seçenekler + FollowSymlinks + SymLinksIfOwnerMatch
            Tümünü Geçersiz Kıl
        </ Directory>
      DocumentRoot / Kullanıcılar / KullanıcıAdınız / Siteler / MyWebSite
      SunucuAdı MyWebSite.local
    </ VirtualHost>
    
  5. / Etc / hosts dosyasını düzenleyin ve bunu en üste ekleyin:

    127.0.0.1 MyWebSite.local
    
  6. Kod dizininizi Siteler dizinindeki bir dizine bağlamak için bir Symlink yapın.

    ln -s ~ / Kod / MyWebSite ~ / Siteler / MyWebSite
    
  7. Apache'yi yeniden başlat


1
Süper Kullanıcıya Hoş Geldiniz! Cevabın önemli kısımlarını buraya eklemek ve bağlantıyı yalnızca ileride başvurmak üzere sağlamak güzel olurdu .
slhck

Xampp zend ortamından varsayılan mac / apache kurulumuna gittim ve su içinde bir yeniden başlatma öldükten sonra. Adım 2 önemliydi. Teşekkür ederim!
Shanimal

2

Aslında Emjay'in cevabından sadece ilk 2 adım artı bir apache yeniden başlatması gerekli, işte benim için işe yarayan şey:

  1. Enable Web Paylaşımı giderek MAC üzerinde Sistem prefrences -> Paylaşım -> Kontrol etkin Web Paylaşımı

  2. Düzenleyin username.confdosya bulunan /private/etc/apache2/usersve ekleme FollowSymLinks direktifini:

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. apache yapılandırmanızı kontrol edin

    sudo apachectl -t

  4. apache'yi yeniden başlat

    sudo apachectl yeniden başlatma

Şimdi Apache Sitesdizininizin altındaki sembolik bağlantıları sunacaktır .


1

403 forbiddenHata alıyordum . Sorunum ne çözüldü httpd-vhosts.conf, aşağıdaki yapılandırmayı değiştirdim

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

ile

<Location "/modulename">
  Require all granted
</Location>

Tüm Konum etiketleri için de aynısını yaptı. İzin sorununu çözdü.


0

Options FollowSymLinks Uygun konteyner için httpd.conf içinde

  1. Conf içinde DocumentRoot dizesini bulun, değerini hatırlayın. <Directory "docroot here">...</Directory>Seçenekler dizesi için bölümün içeriğini kontrol edin . Seçenekler eksikse - dize ekleyin Options FollowSymLinks, varsa ancak FollowSymLinks'e sahip değil gibi davranmak için bu parametreyi ekleyin Options Indexes FollowSymLinks. Yapılandırmayı değiştirdikten sonra Apache'yi yeniden başlatın. Test sonucu, buraya yazın

  2. Apache belgelerini okuyun


Merhaba, üzgünüm - Bu cevap hiç yardımcı olmuyor.
robertj

Eğer çalıştı mı yapmak o? FollowSymLinks'i Apache yapılandırmasında devre dışı bıraktıysanız, işaretlenmiş kaynakları kullanmak için site veya dizin düzeyinde etkinleştirmeniz gerekir
Lazy Badger

ve içindeki dosyaların izinlerini kontrol edin ~, sonra DirectoryIndex dosyasının varlığı: görevi sırayla çöz, tüm olasılıkları kontrol et
Lazy Badger

1
tekrar - Yorumlarınızdan hiçbir şey yapamıyorum. Ben Apache ile ilgili toplam bir newbee (son 6 saat benim googling dışında) sadece uygun konteyner ne hakkında hiçbir fikrim yok . Gerçekten yardımcı olacak httpd.conf ve httpd-vhost.conf'un nasıl yapılandırılacağı konusunda somut bir örnektir.
robertj

@robertj - Sorununuzun çözümü budur. Bu dosyayı düzenlemeniz ve @Lazy_Badger'ın dediği gibi değiştirmeniz gerekiyor. Altında yer almalıdır <Directory /usr/share/web>. Daha sonra, apache'yi kullanarak yeniden başlatmanız gerektiğini unutmayınsudo /usr/sbin/apachectl restart
Steven Lu

0

Bazen şu durumlarda olur:

  • Kaynak klasörünüz bir NTFS dosya sisteminde
  • Muhtemelen önceki bir sahip veya kurulumdan farklı izinlere sahip önceden oluşturulmuş bir klasör kullanıyorsanız.

Bir ext4 dosya sisteminde yeni bir klasör oluşturarak ve simgesel bir bağlantı oluşturarak bu sorunu çözdüm /var/www.


Bu OSX kullanan OP ile ne kadar ilgili?
JoshP
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.