Cara mengizinkan akses ke tautan simbolis di my ~ / Sites / untuk Apache di bawah Mac OS X Lion 10.7.2

12

Saya perlu mengizinkan akses ke direktori sym-linked di ~ / Sites dari Apache saya. Saya Menghubungkan direktori seperti ini

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

Sekarang setiap kali saya menjalankan permintaan GET saya mendapat balasan 403

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>
...

Bagaimana saya bisa memberi tahu Apache untuk mengizinkan akses ke direktori yang disinkronkan dan bagaimana cara memberi tahu Apache agar hanya mengizinkan permintaan yang dipecat dari localhost.

Setiap bantuan sangat dihargai.

salam Hormat

robertj

robertj
sumber

Jawaban:

10

Ini adalah posting blog yang saya tulis ketika saya mencoba mencari tahu bagaimana melakukan persis apa yang Anda coba lakukan.

  1. Aktifkan Berbagi Web di MAC dengan masuk ke System Prefrences -> Sharing -> Centang Aktifkan Berbagi Web
  2. Edit file username.conf Anda yang berada di / private / etc / apache2 / pengguna dan tambahkan direktif “FollowSymLinks”:

    <Directory "/ Users / yourUserName / Sites /">
        Opsi Indeks MultiViews FollowSymLinks
        AllowOverride Tidak Ada
        Pesanan mengizinkan, menolak
        Bolehkan dari semua
    </Directory>
    
  3. Edit file /private/etc/apache2/httpd.conf dan pastikan baris di bawah "# Virtual hosts" tidak dikomentari, seperti:

    Sertakan /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Edit file /private/etc/apache2/extra/httpd-vhosts.conf dan tambahkan:

    <VirtualHost *: 80>  
        <Directory / Pengguna / PenggunaUserName/Situs/MyWebSite.com>
            Opsi + Tautan FollowSym + SymLinksIfOwnerMatch
            AllowOverride All
        </Directory>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </VirtualHost>
    
  5. Edit file / etc / hosts dan tambahkan ini di atas:

    127.0.0.1 MyWebSite.local
    
  6. Buat Symlink untuk menautkan direktori Kode Anda ke satu di direktori Sites.

    ln -s ~ / Code / MyWebSite ~ / Sites / MyWebSite
    
  7. Mulai ulang apache

kelsmj
sumber
1
Selamat Datang di Pengguna Super! Akan menyenangkan untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan hanya untuk referensi di masa mendatang.
slhck
Saya beralih dari lingkungan xampp zend ke pengaturan mac / apache default dan setelah restart mati di dalam air. Langkah 2 adalah kuncinya. Terima kasih!
Shanimal
2

Sebenarnya hanya 2 langkah pertama dari jawaban Emjay plus restart apache yang diperlukan, inilah yang bekerja untuk saya:

  1. Aktifkan Berbagi Web pada MAC dengan membuka System Prefrences -> Sharing -> Periksa Berbagi Web yang diaktifkan

  2. Edit username.conffile Anda yang berada di /private/etc/apache2/usersdan tambahkan direktif FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. periksa konfigurasi apache Anda

    sudo apachectl -t

  4. restart apache

    sudo apachectl restart

Sekarang Apache akan melayani tautan simbolik di bawah Sitesdirektori Anda .

espinielli
sumber
1

Saya mendapatkan 403 forbiddenkesalahan. Apa yang memecahkan masalah saya httpd-vhosts.conf, saya mengganti konfigurasi di bawah ini

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

dengan

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

Melakukan hal yang sama untuk semua tag Lokasi. Itu memecahkan masalah izin.

VINUTHA
sumber
0

Options FollowSymLinks di httpd.conf untuk wadah yang sesuai

  1. Cari string DocumentRoot di conf, ingat nilainya. Periksa konten <Directory "docroot here">...</Directory>bagian untuk string Opsi. Jika Opsi hilang - tambahkan string Options FollowSymLinks, jika ada tetapi belum ikuti FollowSymLinks - tambahkan parameter ini untuk mendapatkan sesuatu seperti Options Indexes FollowSymLinks. Restart Apache setelah memodifikasi konfigurasi. Hasil tes, tulis di sini

  2. Baca dokumentasi Apache

Malas Badger
sumber
Hai, maaf - Jawaban ini tidak membantu sama sekali.
robertj
Apakah Anda sudah mencoba melakukannya ? Anda menonaktifkan FollowSymLinks di konfigurasi Apache, Anda harus mengaktifkan di tingkat situs atau direktori untuk menggunakan sumber daya yang terhubung
Lazy Badger
dan periksa izin untuk file di dalam ~, keberadaan file DirectoryIndex setelahnya: selesaikan tugas secara berurutan, periksa semua kemungkinan
Lazy Badger
1
lagi - saya tidak dapat membuat apa pun dari komentar Anda. Saya benar-benar newbee tentang Apache (selain dari googling saya selama 6 jam terakhir) saya tidak punya petunjuk apa wadah yang tepat . Apa yang akan sangat membantu adalah contoh nyata cara mengkonfigurasi httpd.conf dan httpd-vhost.conf.
robertj
@robertj - Ini adalah solusi untuk masalah Anda. Anda perlu mengedit file itu dan memodifikasinya sesuai seperti yang dikatakan @Lazy_Badger. Itu harus berada di bawah <Directory /usr/share/web>. Perhatikan bahwa setelah itu, Anda harus memulai ulang apache menggunakansudo /usr/sbin/apachectl restart
Steven Lu
0

Terkadang itu terjadi jika:

  • Folder sumber Anda berada di sistem file NTFS
  • Jika Anda menggunakan folder yang sudah dibuat, yang memiliki izin berbeda, mungkin dari pemilik atau instalasi sebelumnya.

Saya menyelesaikan masalah ini dengan membuat folder baru pada sistem file ext4 dan membuat tautan simbolis /var/www.

Aleksandr Leteckij
sumber
Bagaimana ini relevan dengan OP yang menggunakan OSX?
JoshP