web-dev-qa-db-ja.com

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

Herokuにlaravel 5.4アプリをデプロイしました。問題は、次のエラーメッセージが表示されることです。

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

My Procfile:

web: vendor/bin/heroku-php-Apache2 public/

ログを見ると、「/」ではなく「app /」を試みていることがわかります。

マイログ、読みやすくするために省略しています。

2017-12-03T14:18:45.747195+00:00 app[web.1]: [Sun Dec 03 14:18:45.746749 2017] [autoindex:error] [pid 122:tid 140692458305280] [client 10.140.221.43:41026] AH01276: Cannot serve directory /app/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive

私の.htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteC

'/'の代わりに'app /'を調べるように言っているのかわかりません。それがこのエラーの原因である場合。

6
Sijan Bhattarai

ルートが/appにあるとサーバーが考える理由はわかりませんが、このエラーは、Herokuがアプリケーションを提供するpublic/ディレクトリの許可が原因で発生します。

この問題を解決するには、composer.jsonscriptセクションに次を追加します

 "post-install-cmd": [
     "php artisan clear-compiled",
     "chmod -R 777 public/"
 ]

public/ディレクトリの許可の変更に注意してください。

編集:

その間、Procfileをチェックして、スペルが正しく、大文字のPで始まっていることを確認してください。

PS:私は、一部の人々が本当にすっきりしていて、許可があまりにも緩いと言うことを知っています。はい、あなたに賛成です。それを775のような他のものに変更できます。ジュースを流してみましょう。

13
Pila

/appは、アプリが存在するファイルシステム上の絶対パスです。このエラーは、あなたのProcfileがあなたが主張することを実際には含んでいないことを示しています。おそらくGitに追加してコミットしていないでしょう。 Apacheはpublic/サブディレクトリからではなく、現在「ルート」からサービスを提供しようとしています。

3
dzuelke

Laravel Rootフォルダー内に、Procfileというファイルを作成します。

Procfile内に次の行を記述します。

web: vendor/bin/heroku-php-nginx public/

その後、再度展開します! Src and more here https://appdividend.com/2018/04/17/how-to-deploy-laravel-project-on-heroku/

これがお役に立てば幸いです=)

3