ブラウザを介してlocalhostにアクセスしようとすると、このエラーが発生します。
AH01630: client denied by server configuration
サイトフォルダのアクセス許可を確認しました。
Sudo chmod 777 -R *
これが私の設定ファイルです。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Apache 2.4を使用している場合
許可ルールと拒否ルールを確認する必要があります
http://httpd.Apache.org/docs/2.4/upgrading.html#access をチェックしてください。
2.2では、クライアントのホスト名、IPアドレス、およびその他のクライアント要求の特性に基づくアクセス制御は、指令Order、Allow、Deny、およびSatisfyを使用して行われていました。
2.4では、そのようなアクセス制御は他の承認チェックと同じ方法で、新しいモジュールmod_authz_Hostを使って行われます。
新しいディレクティブは Require です。
2.2構成
Order allow,deny
Allow from all
2.4設定:
Require all granted
また、これらの変更後にApacheサーバーを再起動することを忘れないでください(# service httpd restart
)
すべてのディレクトリに対して、Require all granted
の代わりにAllow from all
を書き込みます。
アップデート
上記の方法でうまくいかない場合は、以下の行も削除してください。
注文許可、拒否
DocumentRootパスが正しいことを再確認してください。それはこのエラーを引き起こす可能性があります。
私はravisorgがApacheをバージョン2.4にアップグレードするOSX 10.10 Yosemiteに提案したのと同じ変更を加えました。以下は、http.confに追加された変更です。
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory /Volumes/Data/Data/USER/Sites/>
AllowOverride none
Require all granted
</Directory>
これは私を1日半間完全に追い詰めましたが、他のすべての解決策がうまくいかなかった場合、解決策を見つけました。
これはmacOS用です。
その時点で、私はすぐに403エラーを受け取るのをやめ、すべてが期待通りに動作し始めました。変なことに、私はApacheを再起動する必要さえなかった、それはうまくいった、私は自分のローカルホストに行ったときに自分自身を再起動したと思う、正直にもわからないが、問題はapachectl restartを使っても実際に再起動しない、または停止または開始これが誰かに役立つことを願っています。
私は数時間を費やした後に私の自己を解決しました。
私はvagrant vmのcoookbookを通してApache/2.4.7(Ubuntu)をインストールしました。
/etc/Apache2/Apache2.confファイルには、デフォルトで<VirtualHost *:80>
要素がありません。
私はそれを成し遂げるために2つの変更をしました
<VirtualHost *:80>
を追加しましたそれから最後に私はちょうどVMを起動しました..
エラーログを確認してページをリロードすると、正確な問題に関する詳細情報が表示されます。
$ {Apache_LOG_DIR}が実際に動作するように環境変数を取得します。
source /etc/Apache2/envvars
それから尾と見て...
tail -f ${Apache_LOG_DIR}/error.log
私の場合、
私はmacOS Mojave(Apache/2.4.34)を使っています。 /etc/Apache2/extra/httpd-vhosts.confファイルの仮想ホスト設定に問題がありました。必要なディレクトリタグを追加した後、私の問題は解決しました。
すべて許可する
完全なバーチャルホストセットアップ構造があなたを救うことを願っています。
<VirtualHost *:80>
DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
ServerName project.loc
<Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
Require all granted
</Directory>
ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>
mainProjectFolderNameを正確なProjectFolderNameに置き換えます。
Wamp Serverのデフォルトにhttpd-vhosts.conf
ファイルが含まれていないと誰かが考えていますか。私のアプローチは下記のメモを削除することです
conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
httpd.conf
ファイルにあります。それがすべてです。
Windows OS上のWampServerでApache 2.4を使用している場合。
メモ帳で https-vhosts.conf ファイルを開く必要があります。
C:\wamp64\bin\Apache\apache2.4.37\conf\extra\https-vhosts.conf
上記のファイルが見つからない場合下のスクリーンショットを確認してください
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/wamp64/www
<Directory "c:/wamp64/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
上記のコードで
Require local
と
Require all granted
そしてそれを保存してください。 Apacheサービスを再起動してやり直してください。
これは私を夢中にさせました。最後に問題が何であるかを把握しました:私はエラーログのために直接パスを使用していました、そして、彼らは間違っていました。
なぜApacheはあいまいな(そして間違った)エラーメッセージを出しますか?代わりに、次のような正確で有用なエラーメッセージを使用してください。ErrorLogディレクティブのパス "/wrong/path/and/filename.log"は無効です。
とにかく、修正するには、エラーログディレクティブが次のようになっていることを確認してください。
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
Https Hostがある場合は、ssl configにもRequire all granted
の変更を忘れないでください。
また、Apacheユーザーとして権限を確認すると便利なことがあります。
# ps -eFH | grep http # get the username used by httpd
...
Apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
# su -s/bin/bash Apache # switch to that user
bash-4.2$ whoami
Apache
bash-4.2$ cd /home
bash-4.2$ ls
bash-4.2$ cd mysite.com
bash-4.2$ ls
bash-4.2$ cat file-which-does-not-work.txt
あなたのためにこのページの他の答えがどれもうまくいかないならば、これは私が何時間もの周りにいらいらした後に遭遇したものです。
私はSites
を/private/etc/Apache2/extra/httpd-userdir.conf
のUserDir
として指定して、ユーザー固有の設定を使用しました。しかし、私はエンドポイントhttp://localhost/~jwork/
へのアクセスを禁じられていました。
/var/log/Apache2/error_log
で、/Users/jwork/Sites/
へのアクセスがブロックされていることがわかりました。しかし、私はhttp://localhost/
経由でDocumentRootにアクセスすることを許可されていました。これは私が~jwork
ユーザーを見る権利を持っていないことを示唆しました。しかし、ps aux | egrep '(Apache|httpd)'
とlsof -i :80
によって私が知ることができる限り、Apacheはjwork
ユーザーのために実行されていたので、明らかに私のユーザー設定で何かが書かれていませんでした。
jwork
という名前のユーザーを考えて、これが私の設定ファイルです:
/private/etc/Apache2/users/jwork.conf
<Directory "/Users/jwork/Sites/">
Require all granted
</Directory>
この設定は完全に有効です。しかし、私は自分のユーザー設定が含まれていないことがわかりました:
/private/etc/Apache2/extra/httpd-userdir.conf
## Note how it's commented out by default.
## Just remove the comment to enable your user conf.
#Include /private/etc/Apache2/users/*.conf
これはuserdir confファイルへのデフォルトパスですが、以下に示すように、httpd.conf
で設定可能です。次の行が有効になっていることを確認してください。
/private/etc/Apache2/httpd.conf
Include /private/etc/Apache2/extra/httpd-userdir.conf
# ...
LoadModule userdir_module libexec/Apache2/mod_userdir.so
Wamp 3(Apache 2.4)の場合、他の答えで説明したようにサーバーをオンラインにすることに加えて、仮想ホストファイルconf/extra/httpd-vhosts.conf
で
交換する必要があるかもしれません
Require local
と
Require all granted
httpd.conf
にあなたが
Include conf/extra/httpd-vhosts.conf
私のようにこのエラーに立ち往生していて、上から助けられたことがない人のために:error.logからの問題のフォルダーが実際にあなたのサーバーに存在するかどうかチェックしてください。地雷はDjangoによって間違った場所に自動的に生成されていました(静的ルートでmanage.py collectstatic
に惑わされていました)。なぜエラーを正しく命名できないのかわからない。
:80エントリにディレクトリアクセスを追加して、実際にこれを解決しました。
<Directory "c:/whatever-directory-you-use/">
AllowOverride All
Require all granted
</Directory>
誰もがすべての「セキュリティ」を取得する前に、私の特定の状況下ではこれはセキュリティの問題ではありません。
リモートリソースを使用している場合は、代わりにCURL要求がHTTPS/TLSを経由することを確認することをお勧めします。このディレクトリエントリは443ポートに送信されます。
Ubuntuを使用するときは、CGIモジュールが有効になっているかどうかを確認してください。そうでない場合:
Sudo a2enmod cgi
他の回答で言及されているOrder
およびAllow
ディレクティブの欠落の他に、DirectoryMatch
ディレクティブの一致しない正規表現もこのエラーを引き起こす可能性があることに注意してください。
要求されたパスが/home/user-foo1bar/www/myproject/
である場合、次のマッチャーは一致しません
<DirectoryMatch "/home/user-[a-z]+/www/myproject/">
...
</DirectoryMatch>
したがって、有効なアクセス構成でもこのエラーが発生する可能性があります。
この原因としては、主な設定ファイル(.htaccessではなく)にある、内部のmod_rewriteルールが、サーバーファイルシステムのルートに存在するパスに書き込むことが挙げられます。あなたのサイトに/media
ディレクトリがあり、あなたが次のように書き直すとしましょう。
RewriteRule /some_image.png /media/some_other_location.png
サーバのルートに/media
ディレクトリがある場合は、ファイルシステムのルートが最初にmod_rewriteによってチェックされるため、サイトディレクトリにあるものではなく、それに書き換えられます(アクセス拒否エラーが発生します)。サイトディレクトリの前に、パスの最初のディレクトリが存在する。
私は誰かに役立つかもしれない別のものを手に入れました。 PHP 5.6 => 7.0からアップグレードした後に同じエラーメッセージが表示されました。 PHPアップロード設定を変更しました。コピーした後に変更を忘れました。当時私は画像をアップロードしていませんでしたが、Silverstripe(当社のCMS)はそのエラーを保存してスローすることを拒否していました。画像のアップロードサイズを大きくするとすぐにうまくいきました。
問題は、ディレクティブが<ディレクトリ>の下にないことが考えられます。
https://httpd.Apache.org/docs/2.4/mod/mod_authz_Host.html#requiredirectives
ディレクティブは、<Directory>、<Files>、または<Location>セクション内、および.htaccessファイル内で参照して、サーバーの特定の部分へのアクセスを制御できます。アクセスは、クライアントのホスト名またはIPアドレスに基づいて制御できます。
これが私がそうであったように周りの誰かがグーグルを助けるのであれば、私は私のサーバー上のSVGファイルにアクセスしようとしているこのエラーメッセージを持っていました。 https://example.com/images/file.svg 。他の種類のファイルでも問題ないようでした。SVGだけが失敗していました。
私は/etc/httpd
confファイルを探し回り、すべてのrequire all denied
タイプの設定をチェックしましたが、どの設定がこの効果を持っているのか見つけることができませんでした。
LogHevelをVirtualHost設定でデバッグするようにして、mod_authz_coreロギングが 'Require all denied'が有効であることを指定しているのを見ることができました:
[Mon Jun 10 13:09:54.321022 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of Require all denied: denied
[Mon Jun 10 13:09:54.321038 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of <RequireAny>: denied
[Mon Jun 10 13:09:54.321082 2019] [authz_core:error] [pid 23459:tid 140576341206784] [client 127.0.0.1:54626] AH01630: client denied by server configuration: /home/blah/htdocs/images/file.svg
盲目的なテストの結果、ファイルをWebルートのルートに移動した後、 https://example.com/file.svg ..でアクセスできるようになったため、「images」フォルダでのみ失敗しました。 。これにより、imagesフォルダーにある.htaccessファイルができました。
Zen Cart 1.5にはimages/.htaccessファイルが付属しています。
# deny *everything*
<FilesMatch ".*">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
</FilesMatch>
# but now allow just *certain* necessary files:
<FilesMatch "(?i).*\.(jpe?g|gif|webp|png|swf)$" >
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Allow from all
</IfModule>
</FilesMatch>
これは 非常に厄介な であり、ファイルシステムのあらゆるレベルで.htaccessファイルをチェックして、この種のトム愚かさが起こっている場合にアクセスできないファイルにつながることを他人に気づかせるかもしれません。