apache client ditolak oleh konfigurasi server setelah upgrade mac OS X ke Yosemite

12

Saya tahu ini terlihat mirip dengan pertanyaan lain tetapi Yosemite tampaknya telah mengubah sesuatu dengan konfigurasi apache dengan peningkatan. log kesalahan saya mengatakan "klien ditolak oleh konfigurasi server: / Pengguna / douglas/Situs/testpatient.php"

Versi Apache: MacBook-Pro: apache2 douglas $ apachectl -v Versi server: Apache / 2.4.9 (Unix) Server dibangun: 9 September 2014 14:48:20 File douglas.conf saya adalah 644 root / wheel dan berikut ini:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

http.conf saya memiliki yang berikut:

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

Apa pun akan dihargai. Saya mencoba memutar kembali ke file http.conf sebelumnya tetapi ada sejumlah perbedaan sejauh modul yang perlu dimuat. Sangat mungkin bahwa saya melewatkan modul tetapi tidak ada keluhan di log.

kode new2
sumber
Sementara jawaban chrisMc tepat, para pengacau di masa depan mungkin juga ingin membaca menginstal Apache, PHP, dan MySQL pada Mac OS X Yosemite .
Jason McCreary

Jawaban:

17

Di pengguna Anda .conf (douglas.conf) ganti:

Order allow,deny
Allow from all

Dengan:

Require all granted

Perbedaannya adalah bagaimana apache 2.4 menangani izin

http://httpd.apache.org/docs/2.4/upgrading.html

chrisMc
sumber
Saya mengubah pengaturan di httpd.conf dan douglas.conf tapi saya masih mendapatkan kesalahan yang sama
new2code
1
Jangan lupa untuk me-restart Apache
Thomas Edwards
Ini keren, meskipun Orde lama / Izinkan / Tolak masih berfungsi jika access_compatmodul Anda dihidupkan. Saya pikir akan lebih baik bagi saya untuk mendapatkan kesalahan dan memperbaiki pengaturan saya daripada membiarkannya pergi lebih lama dengan konfigurasi lama.
Alexis Wilke
11

Saya memiliki masalah yang sama juga, dan memperbaikinya dengan melakukannya:

  1. Muat modul userdir dengan menemukan baris berikut di httpd.conf dan hapus komentarnya: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Edit ekstra / httpd-userdir.conf , temukan dan batalkan komentar pada baris berikut: Include /private/etc/apache2/users/*.conf

  3. Edit pengguna / *. Conf , tambahkan Require localdan tambahkan +(atau -) karakter sebelum semua opsi di baris opsi, seperti: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
sumber
1
Ini (tepatnya ini, tidak lebih, tidak kurang) bekerja untuk saya, ketika tidak ada yang lain. Terima kasih!
orome
1

Saya mengalami hal yang sama tetapi pada Mavericks setelah menerapkan pembaruan keamanan dari beberapa hari yang lalu. Mavericks masih menggunakan Apache 2.2 jadi itu bukan masalah konfigurasi yang disebutkan chrisMc, meskipun sepertinya dia benar dan Anda harus mengubahnya juga.

Dalam kasus saya, saya pertama-tama menyelesaikan masalah inti dengan mengomentari baris modul PHP 5,4 Homebrew yang sebelumnya saya tambahkan. Dalam httpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

Dan alih-alih memilih modul PHP default yang telah saya komentari sebelumnya:

LoadModule php5_module libexec/apache2/libphp5.so

Itu memperbaikinya, tetapi karena mengapa versi Homebrew rusak, saya pikir mungkin perpustakaan sistem yang dikompilasi dimutakhirkan dalam pembaruan keamanan. Ketika saya berlari php -vsaya mendapat peringatan tentang icu4cperpustakaan yang tidak dimuat.

Jadi, saya baru saja mengkompilasi ulang PHP dan berfungsi lagi. Dalam kasus saya, saya baru saja melakukannya

brew uninstall php54
brew install php54

Kemudian modul Homebrew dapat diaktifkan kembali.

toddabrahm
sumber
1

Karena saya tidak pernah menggunakan homebrew, saya akhirnya mengikuti panduan ini. Pengaturan untuk pengembangan pribadi .

Saya memang melihat bahwa izin yang dibicarakan oleh poster pertama sebagai bagian dari masalah, tetapi saya masih memiliki masalah izin dengan pengaturan pribadi menggunakan file user.conf. Pengaturan ini menggunakan host virtual. Saya tidak tahu apa yang dilakukan homebrew yang menyelesaikan masalah. Saya kira saya akan menyebutnya sebagai penyelesaian karena tidak memperbaiki masalah awal saya, yaitu bahwa saya tidak dapat mengakses apa pun di server web menggunakan file user.conf.

kode new2
sumber
Luar biasa! Kuncinya bagi saya hanyalah mengomentari baris 220-221 ( # AllowOverride nonedan # Require all denied) yang tampaknya baru ditambahkan di Yosemite.
MarkHu
0

Di httpd.confkomentar:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

Dan dalam /etc/apache2/extra/httpd-userdir.conftanda komentar:

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

Kemudian restart Apache.

chrisMc
sumber
0

Jawaban di atas berfungsi, pada instalasi stok. Jika tidak, beberapa hal yang mungkin membantu:

  1. Pada sistem file Anda, folder harus persis Situs dengan huruf kapital S (nama folder di-hardcod pada modul userdir, tidak boleh berbeda) Izinnya harus:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. The <Directory…>Konfigurasi diterapkan di atasnya, sehingga perlu untuk mencocokkan nama folder persis, termasuk kasus (kami datang dari Linux ...).

    Izin /etc/apache2/users/username.conffile:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

Jadi pastikan bahwa baris tersebut <Directory "/Users/user/Sites/">merujuk tepat ke folder yang tepat dengan nama pengguna yang tepat (dengan pengguna yang cocok dengan nama file konfigurasi), case disertakan, dan Sitesfolder tersebut ada persis seperti apa adanya, case disertakan.

Brunni
sumber
0

Dalam kasus saya, apache versi 2.4.27.

Memecahkan masalah setelah Mengubah file httpd-vhosts.conf saya dari direktori " /etc/apache2/extra/httpd-vhosts.conf ".

Dari

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

Untuk,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
sh6210
sumber