Laravel 5+ Ubuntu 14.04에서 500 내부 서버 오류 발생


85

Windows OS에 Laravel을 여러 번 설치했지만 이런 유형의 문제는 발생하지 않았습니다. 이 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]

Laravel 5+에 필요한 모든 확장 기능이 있습니다. 내가하지 않은 것이 남아 있습니까?


5
그러니 오류 로그를 확인하여 500에 대한 세부 정보를 확인하십시오. 그 사실을 알기 전까지는 모든 곳에서 엉망이 될 필요가 없습니다.
Marc B

2
왜 그냥 +FollowSymLinks맨 위에 있습니까? 이어야 Options +FollowSymLinks합니다.
Mike Rockétt 2015

1
"rewrite_mod를 설치했지만 ..."- AllowOverride서버 구성에서 .htaccess에 대한 적절한 액세스를 허용 했습니까?
MrWhite

@MikeRockett i는 최근에 "옵션"을 제거하여 브라우저를 공백으로 유지하고 유지하지 않으면 500 요청 오류를 반환하지만 두 경우 모두 브라우저에서 500 오류를 반환합니다. !
DpEN 2015

1
@MikeRockett .. index.php 파일에서 "/../"를 제거하고 파일 권한의 다른 오류를 시도하고 표시 한 다음 chmod를 사용하고 읽기 / 쓰기 권한을 설정했는데 제대로 작동했습니다 !!! 도움 형제 고맙습니다!
DpEN

답변:


214

마침내 문제를 극복

  • 문제가 된 .htaccess 파일도 index.php도 아니 었습니다. 문제는 파일에 액세스하고 권한을 요구하는 것입니다.

문제를 해결하기 위해 터미널을 통해 다음 명령을 실행했습니다.

sudo chmod -R 755 laravel_blog

그런 다음 laravel이 저장 폴더에 파일을 쓸 수 있도록 아래에 입력하십시오.

chmod -R o+w laravel_blog/storage

이 두 명령이 문제를 해결했습니다.


1
감사합니다. laravel을 Google 컴퓨팅 엔진의 새로운 우분투 14.04 배포판에 설치할 때이 문제가 발생하여 해결되었습니다.
Alex

1
감사합니다. 이것은 우분투와 맥 모두에서 문제를 해결했습니다.
Arunabh Das

2
이것은 매우 나쁜 조언입니다. chmod는 모든 파일을 + x로 설정합니다. 디렉토리에 대해 수행하고 싶었다고 가정합니다.이 경우 find를 사용합니다.
MightyPork

해당 명령을 실행하려면 어디에서 cd ​​(디렉토리 변경)를해야합니까?
Anastasie Laurent

1
많은 쿠키가 필요합니다. LAMP Ubuntu 16.04 Digital Ocean 설치에서 잘 작동했습니다.
Abhishek Saini

71

.env 파일을 만들고 다음을 실행합니다.

php artisan key:generate

이것은 git 프로젝트를 가져온 후에 저에게 효과적이었습니다.

.env 파일을 만들고 키를 생성 한 후 아래 코드를 실행합니다.

php artisan cache:clear 
php artisan config:clear

3
이것은 나를 위해 일했습니다. 멍청한 실수를하지 마십시오. laravel 프로젝트를 설치 한 후 .env.example의 이름을 .env 또는 php artisan key : generate로 변경해야합니다. 충돌이 발생합니다.
Armin

이게 새로운 건가요? 처음이 문제가 발생
로버트 호샤

1
php artisan cache:clear php artisan config:clear는 제 케이스를 위해 일하고 있습니다
Nurkartiko


20

.env파일 이 있는지 확인 하십시오.

대부분이 일은 그런 일을 일으킬 수 있습니다. 파일을 만든 다음에서 모든 항목을 복사 .env.example하여 만든 파일에 붙여넣고 이름을 지정합니다 .env. 또는 jsut 단순히 .env.example파일 이름을 바꾸고 .env실행하십시오.php artisan key:generate


첫 번째 시도에서이 도움말 +
AZinkey

14

APP_KEY포함 된 .env 파일 이 루트에 있는지 확인하십시오 .

.env에 있어야하는 것은 다른 솔루션에서 명시 적으로 언급되지 않았으며 위의 문장으로 요약 할 것이라고 생각했습니다.

이것은 Laravel을 새로 설치할 때 500 오류를 수정했습니다.

단계 :

  1. 루트 (예를 .env의 파일을 만듭니다 touch .env)
  2. 최소한 한 줄이 포함되어 있는지 확인하십시오. APP_KEY=
  3. 터미널에서 앱 키를 생성합니다. php artisan key:generate

메모:

  • 내 특정 설치에는 .env가 포함되지 않았습니다 (예제 또는 기타)

  • 단순히 .env를 비워두면 작동하지 않습니다.

  • 매개 변수를 포함하지만 APP_KEY매개 변수가없는 .env 는 작동하지 않습니다.

버그? : 터미널에서 앱 키를 생성 할 때 성공한 것으로보고 될 수 있지만 파일에 기존 APP_KEY=줄 이 없으면 실제로 .env에 키가 배치 되지 않습니다 .

참고로 유용한 기준 매개 변수가있는 공식 .env가 있습니다. 필요한 것을 복사하여 붙여 넣으십시오.

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


12

비슷한 오류가 발생했습니다. 로그인을 /var/log/apache2/error.log확인하고 UnexpectedValueException을 발견했습니다.

소유자를 프로젝트 디렉토리 아래의 스토리지 폴더의 아파치 사용자로 변경했습니다.

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은 매우 나쁜 명령이며 인터넷의 모든 사용자에게 쓰기 액세스 권한을 부여합니다. 644가 더 좋습니다.
Zac Grierson

9

이 문제에 대한 또 다른 해결책이 있습니다.

프로젝트의 루트에서 composer 명령을 실행하여 필요한 패키지를 설치합니다.

sudo composer install

최신 정보:

  • 프로덕션 서버에서이 명령을 실행하면 안되지만 composer의 일부 문제는 로컬 환경에서이를 통해 해결할 수 있습니다.

편집하다:


1
도대체 이것이 무엇입니까, 당신은 실제로 당신이 대답하고있는 것을 알고 있습니까!
Jimmy Obonyo Abor

3
@JimmyObonyoAbor 실제로 이것은 작동합니다. 로그에 따르면 500은 / vendor의 일부 파일이 누락 되었기 때문입니다. 어떻게 고쳐 요? composer 설치 / 업데이트를 실행합니다. 감사 upvote에, 크리스토스 Papoulas
tomsihap

5
내가 sudo를 함께 그 명령을 실행 믿습니다하는 것은 잠재적 인 보안 구멍입니다
셰이

5

PHP 7.0과 PHP 7.1이 설치되어 있고 명령 줄에서 PHP 7.1을 사용하고 있었고 Apache에서 PHP 7.0이 활성화되어 있었기 때문에 Laravel Framework와 localhost Apache2를 laravel과 함께 사용할 때 문제가 발생할 수 있습니다.

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

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 파일의 전체 목적을 무효화합니다.
Nathan

테스트 서버 (프로덕션 모드)에서 laravel 앱을 실행할 때 내부 서비스 오류가 발생했습니다. APP_DEBUG = true로 설정하면 오류에 대한 세부 정보를 볼 수 있으므로 문제를 찾아 수정할 수 있습니다.
Debbie V

3

Laravel이 설치된 디렉토리에서 다음 두 명령을 실행하십시오.

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

그런 다음 캐시를 지우고 자동로드를 덤프합니다.

php artisan cache:clear
composer dump-autoload

3

나는이 문제에 여러 번 직면했다. 이 단계 중 하나를 시도해보세요. 아마도 그것은 당신을 도울 것입니다.

  1. 먼저 파일 권한을 확인하십시오.
  2. 파일 권한을 수정하려면 sudo chmod 755 -R your_project
  3. 그런 다음 chmod -R o + w your_project / storage 파일을 저장 폴더에 씁니다.
  4. php artisan cache : clear
    composer dump-autoload
  5. PHP 장인 키 : 생성
  6. 그런 다음 laravel 요구 사항에 따라 서버 요구 사항확인하십시오 .
  7. php 버전 때문에이 오류 여러 번 발생했습니다 . cpanel에서 PHP 버전변경해보십시오 .
  8. 그런 다음 .htaccess 파일을 올바르게 구성하십시오.

3

나는 모든 의견과 제안을 읽었습니다. 500-HTTP ERROR CODE는 내부 서버 오류를 나타냅니다.

이 오류의 원인 :

  • 주로 권한 문제로 인해 발생합니다.
  • 환경 변수를 찾을 수 없거나 .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 앱을 배포 할 때 직면하게 될 몇 가지 일반적인 문제이며 이러한 모든 명령을 받기 시작하는 문제입니다. 시간을 절약 할 스크립트를 만드는 것이 좋습니다.


2

vagrant를 사용하는 경우 다음을 시도하십시오.

먼저 현재 / 공급 업체에서 config.php를 제거합니다.

다음 명령을 실행하십시오.

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

php artisan config : cache를 실행하지 마십시오.

이 도움을 바랍니다.


1

laravel의 루트에서이 두 명령을 실행하십시오.

찾기 * -type d -print0 | xargs -0 chmod 0755 # 디렉토리 용

찾기 . 유형 f -print0 | xargs -0 chmod 0644 # 파일 용


1

공유 호스트와 비슷한 문제가 있습니다. 500 오류가 발생했습니다. 방금 Laravel 버전과 PHP 버전을 확인하여 수정했습니다. 오류는 Laravel 5.6이 PHP 7.0.x에서 실행되지 않기 때문입니다. 일단 이것을 알고 나면 프로젝트를 PHP 7.0.x와 호환되는 Laravel 5.5로 재구성하기 만하면 이제 모든 것이 옳습니다. 가끔 문제가있는 또 다른 이유는 FTP에서 파일이 손상되어 프로젝트를 두 번 이상 업로드해야하기 때문입니다. 앞으로이 주제에서 많은 정보를 찾지 못했기를 바랍니다.


1

나를 좋아하는 사람들은 다른 모든 답변을 시도한 후에도 여전히 오류가 있습니다.

php apache가 사용하는 버전을 확인하십시오. 최신 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 artisan serve


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

쓰기 권한이있는 저장소 폴더 (chmod o + w)를 확인하고 나를 위해 매력적으로 작동합니다.



0

이 문제에 직면하고 Apache에서 PHP 버전을 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 명령은 두 개의 클라이언트 키를 제공하므로 :

1) 개인 액세스 클라이언트 (client_id 및 client_secret)

2) 비밀번호 부여 클라이언트 (client_id & client_secret)

비밀번호 부여 클라이언트를 사용했습니다. 이것이 누군가에게 도움이되기를 바랍니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.