web-dev-qa-db-ja.com

Mac OS XをYosemiteにアップグレードした後、Apacheクライアントがサーバー構成によって拒否されました

これは他の質問と似ているようですが、ヨセミテはApacheの設定でアップグレードによって何かが変わったようです。私のエラーログは「クライアントはサーバーの設定によって拒否されました:/Users/douglas/Sites/testpatient.php」

Apacheのバージョン:MacBook-Pro:Apache2 douglas $ apachectl -vサーバーのバージョン:Apache/2.4.9(Unix)サーバーのビルド:2014年9月9日14:48:20私のdouglas.confファイルは644ルート/ホイールであり、次のとおりです。

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

私のhttp.confには以下が含まれています。

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

何でもいただければ幸いです。以前のhttp.confファイルにロールバックしてみましたが、ロードする必要のあるモジュールまで、いくつかの違いがあります。モジュールを見逃した可能性は十分にありますが、ログには不満はありません。

12
new2code

ユーザーの.conf(douglas.conf)を次のように置き換えます:

Order allow,deny
Allow from all

と:

Require all granted

違いは、Apache 2.4がアクセス許可を処理する方法です。

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

17
chrisMc

私も同じ問題を抱えていて、そうすることで修正しました:

  1. httpd.confで次の行を見つけてコメントを外して、userdirモジュールをロードします:_LoadModule userdir_module libexec/Apache2/mod_userdir.so Include /private/etc/Apache2/extra/httpd-userdir.conf_

  2. 編集extra/httpd-userdir.conf、次の行を見つけてコメント解除します:_Include /private/etc/Apache2/users/*.conf_

  3. sers/*。confを編集し、_Require local_を追加し、_+_(または_-_)文字をオプション行のすべてのオプションの前に追加します:_<Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>_

11
s4nji

同じことを経験しましたが、数日前のセキュリティ更新プログラムを適用した後、Mavericksで経験しました。 MavericksはまだApache 2.2を使用しているので、chrisMcの設定の問題は言及されていませんでしたが、彼は正しいようで、それも変更する必要があります。

私の場合、私はまず、以前に追加したHomebrew PHP 5.4モジュール行をコメントアウトすることにより、コアの問題を解決しました。httpd.conf

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

そして代わりにデフォルトのPHP以前にコメントアウトしたモジュールを選択します:

LoadModule php5_module libexec/Apache2/libphp5.so

それで修正されましたが、なぜHomebrewバージョンが壊れたのかについては、それがコンパイルされたシステムライブラリがセキュリティアップデートで更新されたと思います。 php -vを実行すると、ロードされなかったicu4cライブラリに関する警告が表示されました。

だから、私はPHP=を再コンパイルし、それは再びうまくいきました。私の場合、私はちょうど

brew uninstall php54
brew install php54

その後、Homebrewモジュールを再び有効にすることができます。

1
toddabrahm

私は自作を使用したことがないので、このガイドに従ってしまいました。 個人開発のためのセットアップ

最初の投稿者が話している権限が問題の一部であることがわかりましたが、user.confファイルを使用した個人設定で権限の問題がまだあります。このセットアップでは仮想ホストを使用しました。私は問題を解決するために自作が何をしたかわかりません。私は元の問題を修正しなかったため、これを回避策と呼んでいると思います。つまり、user.confファイルを使用してWebサーバー上の何にもアクセスできないということです。

1
new2code

httpd.confコメント解除:

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

そして/etc/Apache2/extra/httpd-userdir.confコメント解除:

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

次に、Apacheを再起動します。

0
chrisMc

私の場合、Apacheバージョン2.4.27。

httpd-vhosts.confファイルを「/etc/Apache2/extra/httpd-vhosts.conf "ディレクトリ。

から

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

に、

<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>
0
sh6210

上記の答えは、ストックインストールで機能します。そうでない場合、役立つかもしれないいくつかの事柄:

  1. ファイルシステムでは、フォルダーは大文字のSが付いた正確にSitesである必要があります(フォルダー名はuserdirモジュールでハードコーディングされており、異なることはできません)。

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. <Directory…>構成はその上に適用されるため、大文字と小文字を含めて、フォルダー名を正確に一致させる必要があります(Linuxからのものです)。

    /etc/Apache2/users/username.confファイルの権限:

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

したがって、行<Directory "/Users/user/Sites/">が、適切なユーザー名(ユーザーが構成ファイルの名前と一致する)を含む正しいフォルダーを正確に参照し、大文字と小文字が含まれていること、およびSitesフォルダーがそのまま正確に存在することを確認してください、ケース付き。

0
Brunni