Apache tidak bekerja dengan folder Situs pengguna di macOS 10.13 Sierra Tinggi


8

Saya telah mengikuti panduan ini untuk mengatur Apache di Sierra Tinggi: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Saya menggunakannya untuk mengaturnya di Sierra.

Tetapi ketika saya pergi ke http://localhost/~scott/saya mendapatkan "Terlarang. Anda tidak memiliki izin untuk mengakses / ~ scott / di server ini."

Saran untuk pertanyaan serupa ini: localhost / userdir di macOS High Sierra adalah memuat vhosts. Yang sudah saya coba, tetapi masih mendapatkan "Forbidden".

Apakah ada yang berubah antara Sierra dan High Sierra yang akan mencegah Apache bekerja dengan folder Situs pengguna?


Coba apachectl configtest, dan perbarui keluaran
Rakesh kumar

PengembalianSyntax OK
sfyfedotcom

Oke silakan kunjungi URL localhost / ~ yourusername
Rakesh kumar

"Dilarang. Kamu tidak punya izin untuk mengakses / ~ scott / di server ini."
sfyfedotcom

Jawaban:


8

Ini bekerja untuk saya ketika saya mengalami masalah yang sama.

Silakan periksa file "/private/etc/apache2/extra/httpd-userdir.conf".

perubahan

#Include /private/etc/apache2/users/*.conf

untuk

Include /private/etc/apache2/users/*.conf

dan restart apache.

Dari: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


Baris /private/etc/apache2/extra/httpd-userdir.confitu sudah dihapus dari tautan instruksi yang saya ikuti.
sfyfedotcom

apakah Anda memulai ulang apache "sudo apachectl restart"
Robert

Iya. Saya telah melakukan semua perubahan pada file konfigurasi Apache
sfyfedotcom

4

Untuk mengizinkan akses ke direktori Sites, Anda harus menambahkan yang berikut ke /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

Konfigurasi Apache default diatur ke ditolak pada /, jadi Anda harus secara eksplisit mengizinkan akses ke semuanya.


Menambahkan dan memulai kembali apache. Tidak ada bedanya
sfyfedotcom

Saya memiliki masalah yang sama. Sedang mendapatkan "Berhasil!" di locahost, tetapi tidak bisa membuat direktori pengguna berfungsi. Memperbaiki aturan DirectoryMatch seperti ini menyelesaikannya. Terima kasih!
Karra

4

Hanya untuk memperluas ke jawaban Diogo Lima.

Dengan peningkatan ke High Sierra, Apple membuat salinan pengaturan apache Anda sebelumnya dan menambahkan ~ sebelumnya ke file * .conf baik di folder / etc / apache2 dan / etc / apache2 / ekstra. Jika Anda menggunakan host virtual atau host ssl-virtual maka Anda juga perlu memindahkan versi sebelumnya untuk file .conf tersebut.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Ini adalah instalasi bersih dari Sierra Tinggi, jadi saya tidak punya file konfigurasi sebelumnya
sfyfedotcom

Jadi, hanya untuk memperjelas, Anda membuatnya bekerja di Sierra, tetapi tidak melakukan upgrade, melainkan instalasi bersih yang lengkap? Saya ingat ketika saya mengaturnya agar berfungsi di Sierra bahwa saya membuat tautan simbolis dari folder Situs saya ke folder / Library / WebServer / Documents dan memastikan saya telah memberi izin pada diri saya (baca dan tulis). Karena kedengarannya hanya menjadi masalah izin pada tahap ini, sudahkah Anda membuat tautan simbolis dan mengubah izin?
James Martin

Ya itu benar. Saya selalu melakukan instalasi bersih dari versi macOS baru. Saya sadar saya bisa melakukan itu, tetapi saya ingin mempertahankan keduanya /Library/WebServer/Documentsdan Users/username/Sitessebagai lokasi yang terpisah untuk proyek web, karena itulah yang dapat saya lakukan pada macOS selama 10+ tahun terakhir.
sfyfedotcom

Jadi sepertinya Anda perlu menjalankan dua instance terpisah dari Apache pada mesin yang sama, tetapi bukankah itu akan mengalahkan seluruh tujuan pemuatan saldo situs web yang ditawarkan Apache saat dijalankan dari satu instance? Rekomendasi praktik terbaik Apple adalah tidak lagi menggunakan Pengguna / nama pengguna / Situs dan tetap menggunakan Library / Webserver / Documents
James Martin

Contoh Apache tunggal adalah kabel membaca proyek web dari banyak direktori. Begitulah cara saya mengaturnya selama bertahun-tahun.
sfyfedotcom



1

Baru diperbarui pagi ini. Menggunakan folder Situs di / Pengguna / nama pengguna.

Dicadangkan dan diganti httpd.conf, httpd-userdir.conf dan https-vhosts.conf dengan varian sebelumnya.

Berlari sudo apachectl configtestdan dapatkan kesalahan PHP (PHP diperbarui ke 7 di High Sierra). Edit http.conf untuk memulai PHP7 dan sekarang semuanya berfungsi kembali.


+1 untuk menyertakan catatansudo apachectl configtest
David C

1

Kemungkinan solusi (setelah gagal dengan semua saran di atas). Masalahnya adalah dengan izin direktori home. Itu harus dieksekusi untuk grup / orang lain:

sudo chmod go + x / Pengguna / nama pengguna

di mana "nama pengguna" harus diganti dengan nama pengguna yang sebenarnya. Setelah ini, itu berhasil!


0

Fiuh !! Saya menemukan jawabannya sendiri.

Lakukan langkah-langkah ini

Langkah 1: Buka terminal Anda dan jalankan perintah ini di bawah

sudo atom /etc/apache2/httpd.conf

Dan kemudian Uncomment the Line dengan menghapus "#"tanda di depannya

LoadModule php7_module libexec/apache2/libphp7.so

Langkah 2: Jalankan perintah berikut yang disebutkan di bawah ini

cd /private/etc

sudo cp php.ini.default php.ini

Langkah 3: Lalu pergi ke /Library/WebServer/Documentsdirektori Anda dan lakukan

sudo chown -R  root yourprojectname

Kembali ke browser Safari Anda dan ketik "http://localhost/yourprojectname"

Anda siap untuk pergi.

Saya menggunakan MacOS High Sierra 10.13, sudah diperbarui kemarin pagi.


localhostlari dari /Library/WebServer/Documentsberfungsi dengan baik. Masalahnya berjalan localhost/~scottdari /Users/Scott/Sites.
sfyfedotcom

0

Menghabiskan seluruh pagi untuk mencari tahu, tetapi akhirnya berhasil. Semoga ini bisa bermanfaat bagi seseorang.

Saya mengikuti panduan, tetapi dengan sedikit perubahan.

Sekarang saya dapat mengakses folder localhost, tetapi ...

Sebelum sierra tinggi, rasanya seperti: http://localhost/~username/smomesite.local

Sekarang seperti: http://localhost/smomesite.local

Tidak ~usernamediperlukan lagi .


Saya tidak ingin mengubah jalur web apache default ke folder pengguna saya. Dalam versi sebelumnya dari macOS saya sudah bisa menjalankan file / situs dari Users/myname/Sitesdirektori dan/Library/WebServer/Documents
sfyfedotcom

0

Saya baru saja mengalami masalah yang sama, dan ingin melakukan apa yang Anda inginkan (tetap root di / Library / WebServer / Documents, tetapi juga izinkan folder Situs pengguna). Saya tidak yakin apakah ini akan membantu, tetapi setelah menggedor ini selama berjam-jam malam ini, mencari baris demi baris melalui semua file .conf, dan bertanya-tanya apa yang salah, saya menyadari bahwa proses httpd tidak dapat membaca saya direktori pengguna sendiri. Untuk beberapa alasan itu ditetapkan sebagai 750, dan pengguna _www tidak dapat membacanya. Setelah saya memperbaikinya dengan menjalankan "chmod 755." pada direktori pengguna saya, folder Situs muncul tepat.

Saya tidak yakin bagaimana direktori pengguna saya sendiri dapat seperti itu, karena tampaknya mereka default ke 755 ketika saya membuat pengguna baru. Dan saya sudah memeriksa berkali-kali bahwa folder Situs saya diset ke 755.


Baru saja mencobanya dan me-restart Apache. Tetap "Terlarang: Anda tidak memiliki izin untuk mengakses / ~ nama pengguna / di server ini"
sfyfedotcom

0

Saya memiliki masalah yang sama. Saya menghapus komentar dua baris di bawah ini (seperti yang sudah disarankan dalam respons lain)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Namun masih ada kesalahan yang sama. Triknya bagi saya adalah menghapus komentar pada baris tambahan ini di file httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Semoga itu bisa membantu.


Saya sudah
membatalkan

0

Terjadi bahwa pembaruan memindahkan semua konfigurasi Anda sebelumnya ke file .conf ~ sebelumnya. Jika Anda memindahkan /etc/apache2/extra/httpd-userdir.conf ~ sebelumnya ke /etc/apache2/extra/httpd-userdir.conf, dan /etc/apache2/extra/httpd.conf ~ sebelumnya ke / etc / apache2 / extra / httpd.conf, seharusnya berfungsi seperti sebelumnya.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Ini adalah instalasi bersih dari Sierra Tinggi, jadi saya tidak punya file konfigurasi sebelumnya
sfyfedotcom

0

Saya memiliki masalah yang sama. Resolusi itu mudah. Lihat jawaban yang diposting di sini: https://apple.stackexchange.com/a/306390/129503

Saya menghadapi hal yang sama setelah saya upgrade ke High Sierra sebelumnya hari ini. Saya menemukan bahwa file apache berikut diganti dengan versi baru. Untungnya untuk semua file ini terdapat FILE ~ file sebelumnya di folder yang sama. Saya baru saja menyalin versi ~ sebelumnya kembali ke yang asli, restart apache dan semuanya baik-baik saja.

Dalam folder /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Contoh:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

Menggantikan

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

dari yang lebih lama ~ file sebelumnya.

Anda mungkin mendapatkan kesalahan modul php5 di httpd.conf, ganti php5 dengan php7 dan situs Anda akan mulai berfungsi.

Menggantikan

LoadModule php5_module libexec/apache2/libphp5.so

Dengan

LoadModule php7_module libexec/apache2/libphp7.so

0

Saya baru saja meningkatkan dan memiliki masalah yang sama persis. Saya tidak menggunakan vhosts. Solusi bagi saya adalah memastikan:

Di https.confkomentar

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

dan memastikan extra/httpd-user.confmemiliki garis:

UserDir Sites
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.