【Laravel】초보자의 에러 메모
*환경
XAMPP 7.4.5
PHP 7.4.5
Laravel 7.21.0
array_merge(): Expected parameter 2 to be an array, string given
2020.7.26
"array_merge()의 제 2 인수는 배열이지만 문자열이 들어있어"라는 의미입니다. array_merge() 를 사용하지 않는데 나왔을 때는 view() 의 곳일지도 모릅니다. 두 번째 인수를 잘 연관 배열로 만드는 것을 잊습니다.
<?php
use App\Http\Controllers;
use Illuminate\Http\Request;
use function view;
class LaravelController extends Controller {
public function post(Request $request) {
$name = "そらびと";
//誤
//return view("laravel", $name);
//正
return view("laravel", ['name'=>$name]);
}
}
htmlspecialchars() expects parameter 1 to be string, array given
2020.7.27
「htmlspecialchars()의 제1 인수는 문자열이지만 배열이 들어 있어」라는 의미입니다. htmlspecialchar() 그렇게 사용하지 않아! 그렇다면 {{$ [변수 이름]}}에 데이터가 제대로 들어 있지 않은 경우가 많습니다.
Target class [...] does not exist.
2020.7.28
· web.xml의 루트 정보 없음
· 두 번째 인수의 문자열이 잘못되었습니다.
· 컨트롤러의 파일 이름이나 클래스 이름이 잘못되었습니다.
· 컨트롤러의 네임 스페이스가 잘못되었습니다.
어떤 것이 원인입니다. 아직 생각할 수 있는 원인이 있는 것 같습니다만.
include(...): failed to open stream: No such file or directory
2020.7.28
include를 사용하고 있는 파일이라면 그곳을 확인합시다.
"..."곳에 "vendor\composer"가 들어 있는 경우 명령 프롬프트에서composer update
시도해보십시오. 그래서 고쳤습니다.
참고 사이트: 【php】 laravel에서 -vendor 이하의 디렉토리를 찾을 수 없을 때
419 Page Expired
2020.7.28
태그를 사용하고 있을 때, @csrf 를 넣어 잊지 않습니까?
*Laravel5.6 이전에는 {{csrf_field()}}가 됩니다.
참고 사이트: 【Laravel5】가끔 나오는 「the page has expired due to inactivity. please refresh and try again」을 표시하지 않는다
403 This action is unauthorized
2020.7.28
명령 프롬프트 등에서php artisan make:request 【クラス名】
에서 만든 클래스를 이용하고 있는 경우, authorize()로 false가 반환되어 있는 것이 원인이라고 생각됩니다.
참고 사이트: 【Laravel5.8】FormRequest를 사용하면 This action is unauthorized.
Call to undefined function ...
2020.7.30
【호출자와 다른 클래스의 함수의 경우】
use에서 사용할 함수가 있는 클래스를 지정하는 것을 잊어버린다
· 호출하는 클래스의 네임 스페이스가 잘못되었습니다.
· 함수 이름이 잘못되었습니다.
【호출원과 같은 클래스의 함수의 경우】
· 함수 이름이 잘못되었습니다.
・「$this::」를 잊어버린다
SQLSTATE[HY000] [1045] Access denied for user 【데이터베이스명】 (using password: YES) (SQL: select * from sessions where id = 【세션 ID】 limit 1)
2020.8.3
"데이터베이스 연결에 실패한 모양입니다. 설정 파일을 검토합시다. 제 경우에는 .env의 다음 부분을 지웠습니다. (.env는 database.php보다 우선적으로 적용되는 것 같습니다. .env를 설정하고 database.php를 설정하지 않는 손도 OK일지도?)
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
대신 config 디렉토리에 있는 database.php에서 다음과 같이 설정합니다. (MySQL의 경우)
database.php'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '...'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '...'),
'username' => env('DB_USERNAME', '...'),
'password' => env('DB_PASSWORD', '...'),
//略
이번에, 렌탈 서버로 막힌 것입니다만, 호스트의 곳은 localhost가 아니고 공지된 호스트명을 넣지 않으면 안 된 것 같네요.
↓XServer의 경우의 호스트명. 서버 패널에 로그인하여 "MySQL 설정"페이지 아래쪽에 있습니다.
Creating default object from empty value
2020.8.8
Eloquent로 SQL 발행해 조작했을 때에 나오는 일이 있습니다. 이 경우 사용하려는 모델 클래스의 유형을 잘못했거나 변수를 잘못하고 있습니까?
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.23 추가
조건에 사용하는 값이 null가 되어 있는 등의 이유로 SQL로 검색해도 결과가 0건이 되어도 발생하는 일이 있습니다. SQL도 확인해 봅시다.
SQLSTATE[HY000]: General error: 1364 Field 'updated_at' doesn't have a default value (SQL:[SQL 문])
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/solabito331/items/3a24c49ba393dab877ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?php
use App\Http\Controllers;
use Illuminate\Http\Request;
use function view;
class LaravelController extends Controller {
public function post(Request $request) {
$name = "そらびと";
//誤
//return view("laravel", $name);
//正
return view("laravel", ['name'=>$name]);
}
}
2020.7.27
「htmlspecialchars()의 제1 인수는 문자열이지만 배열이 들어 있어」라는 의미입니다. htmlspecialchar() 그렇게 사용하지 않아! 그렇다면 {{$ [변수 이름]}}에 데이터가 제대로 들어 있지 않은 경우가 많습니다.
Target class [...] does not exist.
2020.7.28
· web.xml의 루트 정보 없음
· 두 번째 인수의 문자열이 잘못되었습니다.
· 컨트롤러의 파일 이름이나 클래스 이름이 잘못되었습니다.
· 컨트롤러의 네임 스페이스가 잘못되었습니다.
어떤 것이 원인입니다. 아직 생각할 수 있는 원인이 있는 것 같습니다만.
include(...): failed to open stream: No such file or directory
2020.7.28
include를 사용하고 있는 파일이라면 그곳을 확인합시다.
"..."곳에 "vendor\composer"가 들어 있는 경우 명령 프롬프트에서composer update
시도해보십시오. 그래서 고쳤습니다.
참고 사이트: 【php】 laravel에서 -vendor 이하의 디렉토리를 찾을 수 없을 때
419 Page Expired
2020.7.28
태그를 사용하고 있을 때, @csrf 를 넣어 잊지 않습니까?
*Laravel5.6 이전에는 {{csrf_field()}}가 됩니다.
참고 사이트: 【Laravel5】가끔 나오는 「the page has expired due to inactivity. please refresh and try again」을 표시하지 않는다
403 This action is unauthorized
2020.7.28
명령 프롬프트 등에서php artisan make:request 【クラス名】
에서 만든 클래스를 이용하고 있는 경우, authorize()로 false가 반환되어 있는 것이 원인이라고 생각됩니다.
참고 사이트: 【Laravel5.8】FormRequest를 사용하면 This action is unauthorized.
Call to undefined function ...
2020.7.30
【호출자와 다른 클래스의 함수의 경우】
use에서 사용할 함수가 있는 클래스를 지정하는 것을 잊어버린다
· 호출하는 클래스의 네임 스페이스가 잘못되었습니다.
· 함수 이름이 잘못되었습니다.
【호출원과 같은 클래스의 함수의 경우】
· 함수 이름이 잘못되었습니다.
・「$this::」를 잊어버린다
SQLSTATE[HY000] [1045] Access denied for user 【데이터베이스명】 (using password: YES) (SQL: select * from sessions where id = 【세션 ID】 limit 1)
2020.8.3
"데이터베이스 연결에 실패한 모양입니다. 설정 파일을 검토합시다. 제 경우에는 .env의 다음 부분을 지웠습니다. (.env는 database.php보다 우선적으로 적용되는 것 같습니다. .env를 설정하고 database.php를 설정하지 않는 손도 OK일지도?)
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
대신 config 디렉토리에 있는 database.php에서 다음과 같이 설정합니다. (MySQL의 경우)
database.php'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '...'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '...'),
'username' => env('DB_USERNAME', '...'),
'password' => env('DB_PASSWORD', '...'),
//略
이번에, 렌탈 서버로 막힌 것입니다만, 호스트의 곳은 localhost가 아니고 공지된 호스트명을 넣지 않으면 안 된 것 같네요.
↓XServer의 경우의 호스트명. 서버 패널에 로그인하여 "MySQL 설정"페이지 아래쪽에 있습니다.
Creating default object from empty value
2020.8.8
Eloquent로 SQL 발행해 조작했을 때에 나오는 일이 있습니다. 이 경우 사용하려는 모델 클래스의 유형을 잘못했거나 변수를 잘못하고 있습니까?
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.23 추가
조건에 사용하는 값이 null가 되어 있는 등의 이유로 SQL로 검색해도 결과가 0건이 되어도 발생하는 일이 있습니다. SQL도 확인해 봅시다.
SQLSTATE[HY000]: General error: 1364 Field 'updated_at' doesn't have a default value (SQL:[SQL 문])
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/solabito331/items/3a24c49ba393dab877ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2020.7.28
include를 사용하고 있는 파일이라면 그곳을 확인합시다.
"..."곳에 "vendor\composer"가 들어 있는 경우 명령 프롬프트에서
composer update
시도해보십시오. 그래서 고쳤습니다.참고 사이트: 【php】 laravel에서 -vendor 이하의 디렉토리를 찾을 수 없을 때
419 Page Expired
2020.7.28
태그를 사용하고 있을 때, @csrf 를 넣어 잊지 않습니까?
*Laravel5.6 이전에는 {{csrf_field()}}가 됩니다.
참고 사이트: 【Laravel5】가끔 나오는 「the page has expired due to inactivity. please refresh and try again」을 표시하지 않는다
403 This action is unauthorized
2020.7.28
명령 프롬프트 등에서php artisan make:request 【クラス名】
에서 만든 클래스를 이용하고 있는 경우, authorize()로 false가 반환되어 있는 것이 원인이라고 생각됩니다.
참고 사이트: 【Laravel5.8】FormRequest를 사용하면 This action is unauthorized.
Call to undefined function ...
2020.7.30
【호출자와 다른 클래스의 함수의 경우】
use에서 사용할 함수가 있는 클래스를 지정하는 것을 잊어버린다
· 호출하는 클래스의 네임 스페이스가 잘못되었습니다.
· 함수 이름이 잘못되었습니다.
【호출원과 같은 클래스의 함수의 경우】
· 함수 이름이 잘못되었습니다.
・「$this::」를 잊어버린다
SQLSTATE[HY000] [1045] Access denied for user 【데이터베이스명】 (using password: YES) (SQL: select * from sessions where id = 【세션 ID】 limit 1)
2020.8.3
"데이터베이스 연결에 실패한 모양입니다. 설정 파일을 검토합시다. 제 경우에는 .env의 다음 부분을 지웠습니다. (.env는 database.php보다 우선적으로 적용되는 것 같습니다. .env를 설정하고 database.php를 설정하지 않는 손도 OK일지도?)
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
대신 config 디렉토리에 있는 database.php에서 다음과 같이 설정합니다. (MySQL의 경우)
database.php'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '...'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '...'),
'username' => env('DB_USERNAME', '...'),
'password' => env('DB_PASSWORD', '...'),
//略
이번에, 렌탈 서버로 막힌 것입니다만, 호스트의 곳은 localhost가 아니고 공지된 호스트명을 넣지 않으면 안 된 것 같네요.
↓XServer의 경우의 호스트명. 서버 패널에 로그인하여 "MySQL 설정"페이지 아래쪽에 있습니다.
Creating default object from empty value
2020.8.8
Eloquent로 SQL 발행해 조작했을 때에 나오는 일이 있습니다. 이 경우 사용하려는 모델 클래스의 유형을 잘못했거나 변수를 잘못하고 있습니까?
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.23 추가
조건에 사용하는 값이 null가 되어 있는 등의 이유로 SQL로 검색해도 결과가 0건이 되어도 발생하는 일이 있습니다. SQL도 확인해 봅시다.
SQLSTATE[HY000]: General error: 1364 Field 'updated_at' doesn't have a default value (SQL:[SQL 문])
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/solabito331/items/3a24c49ba393dab877ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2020.7.28
명령 프롬프트 등에서
php artisan make:request 【クラス名】
에서 만든 클래스를 이용하고 있는 경우, authorize()로 false가 반환되어 있는 것이 원인이라고 생각됩니다.참고 사이트: 【Laravel5.8】FormRequest를 사용하면 This action is unauthorized.
Call to undefined function ...
2020.7.30
【호출자와 다른 클래스의 함수의 경우】
use에서 사용할 함수가 있는 클래스를 지정하는 것을 잊어버린다
· 호출하는 클래스의 네임 스페이스가 잘못되었습니다.
· 함수 이름이 잘못되었습니다.
【호출원과 같은 클래스의 함수의 경우】
· 함수 이름이 잘못되었습니다.
・「$this::」를 잊어버린다
SQLSTATE[HY000] [1045] Access denied for user 【데이터베이스명】 (using password: YES) (SQL: select * from sessions where id = 【세션 ID】 limit 1)
2020.8.3
"데이터베이스 연결에 실패한 모양입니다. 설정 파일을 검토합시다. 제 경우에는 .env의 다음 부분을 지웠습니다. (.env는 database.php보다 우선적으로 적용되는 것 같습니다. .env를 설정하고 database.php를 설정하지 않는 손도 OK일지도?)
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
대신 config 디렉토리에 있는 database.php에서 다음과 같이 설정합니다. (MySQL의 경우)
database.php'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '...'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '...'),
'username' => env('DB_USERNAME', '...'),
'password' => env('DB_PASSWORD', '...'),
//略
이번에, 렌탈 서버로 막힌 것입니다만, 호스트의 곳은 localhost가 아니고 공지된 호스트명을 넣지 않으면 안 된 것 같네요.
↓XServer의 경우의 호스트명. 서버 패널에 로그인하여 "MySQL 설정"페이지 아래쪽에 있습니다.
Creating default object from empty value
2020.8.8
Eloquent로 SQL 발행해 조작했을 때에 나오는 일이 있습니다. 이 경우 사용하려는 모델 클래스의 유형을 잘못했거나 변수를 잘못하고 있습니까?
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.23 추가
조건에 사용하는 값이 null가 되어 있는 등의 이유로 SQL로 검색해도 결과가 0건이 되어도 발생하는 일이 있습니다. SQL도 확인해 봅시다.
SQLSTATE[HY000]: General error: 1364 Field 'updated_at' doesn't have a default value (SQL:[SQL 문])
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/solabito331/items/3a24c49ba393dab877ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2020.8.3
"데이터베이스 연결에 실패한 모양입니다. 설정 파일을 검토합시다. 제 경우에는 .env의 다음 부분을 지웠습니다. (.env는 database.php보다 우선적으로 적용되는 것 같습니다. .env를 설정하고 database.php를 설정하지 않는 손도 OK일지도?)
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
대신 config 디렉토리에 있는 database.php에서 다음과 같이 설정합니다. (MySQL의 경우)
database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '...'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '...'),
'username' => env('DB_USERNAME', '...'),
'password' => env('DB_PASSWORD', '...'),
//略
이번에, 렌탈 서버로 막힌 것입니다만, 호스트의 곳은 localhost가 아니고 공지된 호스트명을 넣지 않으면 안 된 것 같네요.
↓XServer의 경우의 호스트명. 서버 패널에 로그인하여 "MySQL 설정"페이지 아래쪽에 있습니다.
Creating default object from empty value
2020.8.8
Eloquent로 SQL 발행해 조작했을 때에 나오는 일이 있습니다. 이 경우 사용하려는 모델 클래스의 유형을 잘못했거나 변수를 잘못하고 있습니까?
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.23 추가
조건에 사용하는 값이 null가 되어 있는 등의 이유로 SQL로 검색해도 결과가 0건이 되어도 발생하는 일이 있습니다. SQL도 확인해 봅시다.
SQLSTATE[HY000]: General error: 1364 Field 'updated_at' doesn't have a default value (SQL:[SQL 문])
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/solabito331/items/3a24c49ba393dab877ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$items = new Items();
//誤
$guests->id = $request->id;
//正
$items->id = $request->id;
2020.8.12
"updated_at는 필수이지만 하늘에서 등록하려고 하고 있어"라는 의미가 됩니다. null 금지의 컬럼에 값을 넣어 잊지 않았는지 체크입니다.
섹션에 쓰는 것처럼 오류 메시지에 'updated_at'이 들어 있으면 모델 클래스의 다음 문장으로 인해 발생합니다. 제거하면 해결됩니다.
public $timestamps = false;
Reference
이 문제에 관하여(【Laravel】초보자의 에러 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/solabito331/items/3a24c49ba393dab877ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)