web-dev-qa-db-ja.com

禁止このサーバーにアクセスする権限がありません。 Centos 6 / Laravel 4

lAMPのセットアップを完了してlaravel 4アプリケーションをインストールした後、問題が発生しました。IPアドレスURLにアクセスすると、アプリケーションの最初のページが表示されます。正しく、しかしページの残りのすべては私に404エラーを投げます要求されたURLはこのサーバーで見つかりませんでした。

だから私はhttpd.confに追加しました(私のプロジェクトの仮想ホストの下)-AllowOverride All Order allow、deny

<VirtualHost *:80>
        ServerName VPS-IP-ADDRESS
        DocumentRoot /var/www/html/nextmatch/public_html/public/

       <Directory /var/www/html/nextmatch/public_html/public/>
         AllowOverride all
         Order allow,deny
          <IfModule mod_rewrite.c>
          Options -MultiViews
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
         RewriteRule ^ index.php [L]
       </IfModule>
</Directory>
</VirtualHost>

そして今、代わりに404エラーをナビゲートしようとすると、禁止されましたこのサーバーにアクセスする権限がありません。 chmod 775 -R path/laravel/と777のフォルダストレージを設定しましたが、それでも同じエラーが発生しました。私はこの問題を理解することができません。助けてくれてありがとう。

12

Webサーバーは、特定のユーザーのデーモン(サービス)として起動します。そのユーザーはhttpd.confで定義されています。デフォルトでは、そのユーザーはApacheです。 Apacheユーザーとhttpdプロセスを混同しないでください。後者はWebサーバーデーモンで、前者は実行するユーザーです。作成したフォルダーがルートまたはhttpd.confで定義されているユーザー以外のユーザーに属している場合、Apacheはそのフォルダーにアクセスできません。この問題を特定する方法は、フォルダーに移動してls -lを実行することです。 httpd.confで定義するユーザーがApacheである場合、フォルダーにアクセスするには、次のように表示されます。

drwxr-xr-x.  2 Apache apache    4096 Jan  8  2013 public_folder

「Apache apache」と書かれていることに注意してください。これは、Apacheユーザーとグループに属していることを意味します。ルート経由で作成した場合は、おそらく次のように表示されます。

drwxr-xr-x.  2 root root    4096 Jan  8  2013 public_folder

Apacheユーザーは、rootによって定義されたフォルダーにアクセスできません。この問題を解決するには、次のコマンドを実行します。

chown -R Apache:apache myfolder

-Rオプションは再帰的であるため、すべてのフォルダーとそのフォルダー内のファイルの所有権をApacheユーザーに更新します。

所有権に問題がなければ、「一時的に」selinuxをオフにしてみてください。 centosで行うこと:

setenforce 0

次の再起動までselinuxがオフになります。理想的には、セキュリティを強化するためにselinuxをオンにして、Apacheのファイルとフォルダーに有効なコンテキストを設定します。

Selinuxを無効にしても機能する場合は、ファイルとフォルダーのセキュリティコンテキストが間違っている可能性があります。次のコマンドを実行して、セキュリティコンテキストを復元します。

restorecon -R -v /var/www/
13
Rijndael

CentOSを使用している場合、selinuxに問題がある可能性があります。 selinuxが「sestatus」で有効になっているかどうかを確認します。有効になっている場合、「Sudo setenforce 0」を使用して、(一時的に)問題であるかどうかを確認できます。 Apacheがサイトを提供できる場合は、「Sudo chcon -R -t httpd_sys_content_t」を使用してファイルのコンテキストを再帰的に変更するだけです(「ls -Z」を使用して既存のコンテキストを確認できます)。

Selinuxは問題ではないかもしれませんが、確認する価値があります。

8
iavery

フォルダー内でこれを試してください:

chcon -R -t httpd_sys_content_t *
5
Mahdi
chcon -R -t httpd_sys_content_t *

私のためにトリックをしました。

2
tummie

/ etc/Apache2/mods-availableのphp5.confから

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_value engine Off
#    </Directory>
#</IfModule>
0