Laravel 5+ Ubuntu14.04で500内部サーバーエラーが発生する


88

LaravelをWindowsOSに何度もインストールしましたが、この種の問題は発生しませんでした。この500内部サーバーは通常、「mod_rewrite」モジュールがオンになっていないときに発生します。

ただし、Ubuntu 14.04では、この問題が頭痛の種になっています。rewrite_modをインストールしましたが、機能しません。ie内のすべてのフォルダとファイルへのアクセスを許可しました

/ var / www / html / laravel_project

それでも動作しません。.htaccessもオリジナルからこれに変更しました。

    +FollowSymLinks
RewriteEngine On

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

Laravel5 +に必要なすべての拡張機能もあります。私がしなかったことが残っていますか?


5
したがって、エラーログをチェックして、500の詳細を確認してください。それがわかるまでは、あちこちでぶらぶらしても意味がありません。
マークB

2
なぜそれ+FollowSymLinksが一番上にあるのですか?する必要がありますOptions +FollowSymLinks
マイクRockétt

1
「rewrite_modをインストールしましたが...」-AllowOverrideサーバー構成で.htaccessへの適切なアクセスを許可しましたか?
MrWhite 2015

@MikeRockett最近、ブラウザが空白の白になるときに「オプション」を削除しました。保持しないと、ブラウザは500リクエストエラーを返しますが、どちらの場合もブラウザは500エラーを返します。!
dpEN 2015

1
@MikeRockett ..index.phpファイルから "/../"を削除し、ファイルパーミッションのさまざまなエラーを試し、表示してから、chmodと読み取り/書き込みパーミッションを設定しました。助けてくれてありがとう!
dpEN 2015

回答:


215

ついに問題を克服した

  • 問題となったのは.htaccessファイルでもindex.phpでもありませんでした。問題は、ファイルへのアクセスとアクセス許可の要求にありました。

問題を解決するために、ターミナルから次のコマンドを実行しました。

sudo chmod -R 755 laravel_blog

次に、以下と入力して、laravelがファイルをストレージフォルダーに書き込めるようにします

chmod -R o+w laravel_blog/storage

この2つのコマンドで問題が解決しました。


1
おかげで、グーグルコンピューティングエンジンの新しいubuntu 14.04ディストリビューションにlaravelをインストールするときにこの問題が発生しました、これはそれを解決しました。
アレックス

1
これをありがとう。これにより、ubuntuとmacの両方で問題が修正されました。
Arunabh Das 2016

2
これは非常に悪いアドバイスです。chmodはすべてのファイルを+ xに設定します。私はあなたがディレクトリのためにそれをしたいと思ったと思います、その場合あなたはfindを使うでしょう。
MightyPork 2016

そのコマンドを実行するには、どこでcd(ディレクトリの変更)を行う必要がありますか?
Anastasie Laurent

1
あなたはたくさんのクッキーが必要です。LAMP Ubuntu16.04デジタルオーシャンのインストールで正常に動作しました。
Abhishek Saini 2017年

75

.envファイルを作成し、次を実行します。

php artisan key:generate

これは、gitプロジェクトをプルした後の私にとってはうまくいきました。

.envファイルを作成してキーを生成した後、以下のコードを実行します。

php artisan cache:clear 
php artisan config:clear

3
これは私のために働いた。確か.envやPHP職人キーに.env.example名前を変更するlaravelプロジェクトのメイクをインストールした後、noobのミスをしないでください:発生クラッシュします
アーミン

これは新しいことですか?この問題に初めて遭遇した
RobertRocha19年

1
php artisan cache:clear php artisan config:clear私の場合のために働いている
Nurkartiko

27

インストール後、以下のコマンドを実行します

sudo chmod 755 -R laravel
chmod -R o+w laravel/storage

ここで「laravel」はlaravelがインストールされたディレクトリの名前です


このコマンドを使用して、必ずコマンドを実行してくださいcomposer install
Iftikhar Ali Ansari 2017

sudo chmod -R 755 laravel-Rの場所が間違っている
Hïkmãtイスカンダル

22

.envファイルがあるかどうかを確認してください。

ほとんどの場合、このことはそのようなことを引き起こす可能性があります。ファイルを作成してからすべてをコピーし.env.example、作成したファイルに貼り付けて名前を付けてください.env。またはjsutは単に.env.exampleファイルの名前を変更し.envて実行しますphp artisan key:generate


最初の試みでこのヘルプ+
AZinkey 2018

15

APP_KEYを含む.envファイルがルートに存在することを確認してください。

.envにあるべきものは、他のソリューションでは明示的に述べられておらず、上記の文に要約すると思いました。

これにより、Laravelの新規インストールでの500エラーが修正されました。

手順:

  1. ルートに.envファイルを作成します(例touch .env
  2. 少なくとも1行含まれていることを確認してください。 APP_KEY=
  3. ターミナルでアプリキーを生成します。 php artisan key:generate

ノート:

  • 私の特定のインストールには、.envがまったく含まれていませんでした(例またはその他)

  • 空白の.envがあるだけでは機能しません。

  • パラメータを含むが、パラメータを含まない.env APP_KEYは機能しません。

バグ?:ターミナルでアプリキーを生成すると、成功したと報告される場合がありますが、 場合がありますが、ファイルに既存のAPP_KEY=行がない場合、実際にはキーは.envに配置されません。

参考までに、有用なベースラインパラメータを備えた公式の.envを次に示します。必要なものをコピーして貼り付けます。

https://github.com/laravel/laravel/blob/master/.env.example


12

私は同様のエラーに直面しました。ログインを確認した/var/log/apache2/error.logところ、UnexpectedValueExceptionが見つかりました

プロジェクトディレクトリの下にあるストレージフォルダの所有者をapacheユーザーに変更しました。

sudo chown -R www-data:www-data ./storage

私の場合、apache2プロセスの所有者はwww-dataです。これを自分のものに変更してください。これはapache2構成ファイルにあります。これがお役に立てば幸いです。


12

私はこのコマンドで修正しました:

   rm -rf app/storage/logs/laravel.logs
   chmod -R 777 app/storage,
   php artisan cache:clear,
   php artisan dump-autoload OR composer dump-autoload

サーバーを再起動するよりも、XAMPPまたは別のサーバーを再起動すると、それが機能するはずです。


3
777は非常に悪いコマンドであり、インターネット上の誰にでもWRITEアクセスを許可します。644の方がお勧めです。
ザック

9

この問題の別の解決策があります:

プロジェクトのルートからcomposerコマンドを実行して、必要なパッケージをインストールします。

sudo composer install

更新:

  • このコマンドを本番サーバーで実行しないでください。ただし、composerのいくつかの問題は、ローカル環境でこれを使用して解決できます。

編集:


1
一体これは何ですか、あなたは実際にあなたが答えているものを知っていますか?
Jimmy Obonyo Abor 2016

3
@JimmyObonyoAbor実際にはこれは機能しています。ログによると、500は/ vendor内のいくつかのファイルが欠落しているためでした。どのようにそれを修正しますか?Composerのインストール/更新を実行する。感謝と賛成、Christos Papoulas
tomsihap

5
そのコマンドをsudoで実行することは、潜在的なセキュリティホールであると私は信じています
Shay

5

PHP7.0とPHP7.1をインストールし、コマンドラインでPHP 7.1を使用し、ApacheでPHP 7.0を有効にしました。これは、LaravelFrameworkとlocalhostApache2をlaravelで使用しているときに問題を引き起こす可能性があります。

最初にcomposerファイルをチェックして、PHPのバージョンを確認してください。

"php": "^7.1.3",
"laravel/framework": "5.6.*",

コマンドラインで現在のphpバージョンを確認してください

php -v

Apacheで有効になっている現在のphpバージョンを確認してください。ブラウザを使用しました。

http://localhost

同じでない場合は、現在のバージョンを無効にして、最新のバージョンを有効にします。

sudo a2dismod php7.2

sudo a2enmod php7.1

sudo service apache2 restart

その後、フォルダのアクセス許可を変更します

sudo chmod 755 -R blog

ストレージフォルダ用

chmod -R o+w blog/storage

5

gitを使用するときによくある問題:

Laravel's .gitignore ignores the .env file which when missing generates this error

これを解決するには、サーバーに.envファイルを手動で追加するか、FTP経由でアップロードします。


4

時々phpバージョンに問題があります。サーバーからphpバージョンを変更する必要があります。.htaccessファイルの文字列の下に書き留めてください。

AddHandler application/x-httpd-php5 .php

4

私はすべてのコメントと提案を読みました。500-HTTPエラーコードは内部サーバーエラーを表します。

このエラーの理由:

  • 主に許可の問題による原因があります
  • .envルートディレクトリに環境変数が見つからないか、ファイルが見つかりません
  • PHP拡張機能の問題
  • データベースの問題

修正:

  • 正しい権限を設定します。
    • これらのコマンドを実行します(Ubuntu / Debian)
find /path/to/your/root/dir/ -type f -exec chmod 644 {} \;
find /path/to/your/root/dir/ -type d -exec chmod 755 {} \;

chown -R www-data:www-data /path/to/your/root/dir/

chgrp -R www-data storage bootstrap/cache
chmod -R ug+rwx storage bootstrap/cache
  • 場合.envファイルが存在しない、して作成touch .envし、環境変数を貼り付け、その後、実行します
   php artisan key:generate
   php artisan cache:clear
   php artisan config:clear
   composer dump-autoload
  • php.iniファイルを確認し、必要な拡張機能のコメントを解除します(場合によっては、このコマンドを実行して拡張機能をインストールする必要があります apt-get install php7.2-[extension-name]
  • .envファイル内のデータベースの資格情報と値を確認してください。そして、そのデータベースのデータベースユーザーにアクセス許可を付与します。

これらは、laravelアプリをデプロイするときに直面する可能性のある一般的な問題であり、これらすべてのコマンドを取得し始めると、時間を節約できるスクリプトを作成することをお勧めします。


3

まず、プロジェクトフォルダー(laravelと呼ばれる)、ストレージサブフォルダーとそのログサブフォルダー、およびベンダーサブフォルダー(laravel / storage、laravel / storage / logs、laravel / vendor)のすべての権限を許可します。

次に、.envファイルがあるかどうかを確認します。ない場合は、次を実行できます。

$ mv .env.example .env

組み込みの.env.exampleの名前を必要な.envに変更します。

それ以外の場合は、デバッグモードをオンにします-.envを開いて設定します

APP_DEBUG=true

laravel / config /app.phpを開いて変更します

'debug' => env('APP_DEBUG', false), 

'debug' => env('APP_DEBUG', true),

そのため、エラーの理由を見つけることができます。


4
そのようにconfig / app.phpを編集する必要がある理由はありません。は、.envファイルの目的全体を否定します。
ネイサン

テストサーバー(本番モード)でlaravelアプリを実行すると、内部サービスエラーが発生していました。APP_DEBUG = trueを設定すると、エラーの詳細を確認できるため、問題を見つけて修正することができました。
デビーV

3

Laravelがインストールされているディレクトリで次の2つのコマンドを実行します。

sudo chmod 755 -R DIRECTORY_NAME
chmod -R o+w DIRECTORY_NAME/storage

次に、キャッシュをクリアし、自動ロードをダンプします。

php artisan cache:clear
composer dump-autoload

3

私は何度もこの問題に直面しました。これらの手順の1つを試してみてください。多分それはまたあなたを助けるでしょう。

  1. まず、ファイルのアクセス許可を確認します。
  2. ファイルパーミッションを修正するにはsudochmod 755 -R your_project
  3. 次に、chmod -R o + w your_project / storageを実行して、ファイルをストレージフォルダーに書き込みます。
  4. php職人キャッシュ:コンポーザーダンプをクリア
    -自動ロード
  5. php職人キー:生成
  6. 次に、laravelの要件に従ってサーバーの要件確認します
  7. 多くの場合 、phpバージョンが原因でこのエラーが発生しますPHPのバージョンを変更してみてくださいcpanelでを。
  8. 次に、.htaccessを構成します ファイルを適切に

2

vagrantを使用する場合は、次のことを試してください。

まず、current / vendorのconfig.phpを削除します。

次のコマンドを実行します。

php artisan config:clear
php artisan clear-compiled
php artisan optimize

php artisan config:cacheを実行しないでください。

この助けを願っています。


1

Laravelのルートでこれらの2つのコマンドを実行します

検索* -type d -print0 | xargs -0 chmod 0755#ディレクトリ用

見つける。-type f -print0 | xargs -0 chmod 0644#ファイル用


1

共有ホストでも同様の問題が発生します。500エラーが発生していました。LaravelのバージョンとPHPのバージョンを確認して修正しました。エラーは、Laravel5.6がPHP7.0.xで実行されないためでした。これを知ったら、プロジェクトをPHP7.0.xと互換性のあるLaravel5.5に再構成するだけで、すべてが正しくなります。私が時々問題を抱えているもう一つの理由は、FTPが破損したファイルを取得し、プロジェクトを複数回アップロードしなければならないことです。将来、このトピックでそれほど多くの情報が見つからないことを願っています。


1

私が好きな人のために、他のすべての答えを試した後でもエラーが発生しました:

phpapacheが使用するバージョンを確認してください。最新のlaravelはphp7.1でのみ機能します。だからあなたはしなければなりません:

sudo a2dismod php[yourversion]
sudo a2enmod php7.1
sudo systemctl restart apache2

お役に立てれば


1

ライブサーバー上にある場合は、これを試してください

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /


# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

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

次に、composer.jsonのphpバージョンがサーバーのバージョンと同じであることも確認してください。

を使用してターミナルでphpバージョンを確認してください php -v



1

まず、laravelリポジトリに.envファイルがない場合。.env.exampleファイルをコピーして貼り付け、名前を.envに変更します。次に、.envファイルを開き、データベース部分でデータベースの説明を入力します。実行:php artisan key:generate php artisan cache:clear php artisan config:cache php artisan config:clear composer dump-autoload php artisanserve


0

ログによると:

[06-Feb-2016 22:38:48 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:38:48 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Warning:  require(/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17
[06-Feb-2016 22:43:37 Europe/Berlin] PHP Fatal error:  require(): Failed opening required '/Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/../vendor/autoload.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php') in /Users/tomsihap/Documents/Development/mamp/partie_1_exo/bootstrap/autoload.php on line 17

/ vendorフォルダーにファイルを開く際に失敗することがあります。

Composerを介してインストールおよび更新することで、最終的に問題を解決することができました。

sudo composer install
sudo composer update

0

write previlege(chmod o + w)のあるストレージフォルダーが魅力のように機能することを確認してください。



0

私はこの問題に直面し、PHPバージョンをapacheで5.6.xにアップグレードすることで修正しました



0

次のコマンドを実行しました。

php artisan passport:install

パスポートを使用して、APIとVue.jsに完全に基づいてアプリケーションを実行していました。Laravelは正常に機能しましたが、APIを介してログインしようとするたびに、エラーが発生しました。コマンドを実行し、Laravelファイルのclient_idとclient_secretを更新してから、新しい更新をライブサーバーにプッシュした後、問題は解決しました。私のユーザーモデルには、次のようなスクリプトがあります。

public function generateToken($request)
{
    $http = new \GuzzleHttp\Client();
    $response = $http->post(URL::to('/').'/oauth/token', [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => '6',
            'client_secret' => 'x3yhgWVqF8sSaMev4JI3yvsVxfbgkfRJmqzlpiMQ',
            'username' => $this->email,
            'password' => $request->input('password'),
            'scope' => '',
        ],
    ]);
    //  Lets get an array instead of a stdObject so that we can return without errors
    $response = json_decode($response->getBody(), true);

    return oq_api_notify([
                'auth' => $response,                                        //  API ACCESS TOKEN
                'user' => $this->load(['settings'])->toArray(),
            ], 201);
}

client_idとclient_secretを更新してから、保存しました。passportコマンドは2つのクライアントキーを提供するため、次のようになります。

1)パーソナルアクセスクライアント(client_id&client_secret)

2)パスワード付与クライアント(client_id&client_secret)

パスワード付与クライアントを使用しました。これが誰かを助けてくれることを願っています:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.