반응형
라라벨 프로젝트를 git clone 받고 실행하려고 하면 오류가 난다.

git 으로 형상관리가 안되는 폴더와 파일

  1. vendor 폴더
  2. node_module 폴더
  3. .env 파일

→ 있어야 할 폴더들이 없기 때문에 오류가 나는 것이다.

.env 파일

.env 파일을 생성한다.

vendor 폴더

vendor 폴더는 Composer의 의존성 폴더이다.
vendor 폴더는 composer install 을 하면 생성된다.

composer install 이란?
- 아무것도 업데이트 하지 않고 지정한 버전의 composer.lock 파일에 지정된 대로 모든 종속성을 설치한다.

composer update 란?
- 지정된 종속성을 업데이트하고, 패키지가 업데이트 된다.

node_modules 폴더

package.json 파일이 있다면 npm install 명령어를 실행하면 생성된다.


composer install 했을 때 생기는 오류

저는 아래와 같은 오류가 생겼었습니다.


저의 해결방법은 이렇습니다.

1. 우선 composer install 명령어를 실행하면서 생긴 vendor 폴더를 지웁니다.

rm -rf vendor


2. 파일 권한 바꾸기

sudo chmod -R 777 storage sudo chmod -R 777 bootstrap


3. 파일 생성

mkdir -p storage/framework/sessions mkdir -p storage/framework/views mkdir -p storage/framework/cache


마지막 파일 생성까지 해주니 오류없이 실행되는 것을 확인할 수 있었습니다.

반응형
반응형

데이터베이스 연동하는 방법은 migrate를 이용하는 방법과 mysql database에 있는 테이블을 연동해서 작업하는 방법이 있습니다.
테이블을 직접 연동해서 작업하는 방법대로 해보겠습니다.

1. .env 파일을 수정해줍니다.

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=ash_test DB_USERNAME=root DB_PASSWORD=secret

2. config > database.php

먼저 config폴더 하위에 있는 database.php 파일을 수정해줍니다.
이 파일에서는 기본적인 커넥션 설정내용을 수정가능합니다.

→ 수정한 코드를 적용을 시키려면 터미널에 php artisan config:cache 명령어를 실행시켜야 적용됨

3. 터미널 입력

app 디렉토리 하위에 Models라는 디렉토리를 만들고 안에 Test.php 라는 파일을 만든다.

php artisan make:model Models/Test

4. Test.php 파일 수정

$connection : 연동 할 데이터베이스 선택
$table : 연동 할 데이터베이스의 테이블 선택

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Test extends Model { protected $connection = 'ash_test'; protected $table = 'test'; public $timestamps = false; }

5. routes > web.php 파일 수정

Route::get('/', function () { $user = DB::connection('ash_test')->table('test')->get(); return $user; });


수정을 한 후 터미널에 php artisan serve 를 입력하여 서버를 실행시킵니다.
브라우저에 127.0.0.1:8000 입력하면 아래와 같이 해당 테이블에 있는 모든 정보를 가져와서 출력시킵니다.



반응형
반응형

오늘 해볼것은 바로 Mac 로컬에서 mysql 설치하고 Laravel 프로젝트까지 연동을 해보도록 하겠습니다.
우선 [Laravel Up & Running 처음부터 제대로 배우는 라라벨] 이라는 책을 보면서 하였습니다.

mysql 설치

저는 홈브루를 이용해서 mysql을 설치 해보겠습니다.
홈브루 사용 전 업데이트를 꼭 해주세요.

brew update brew install mysql

업데이트를 했다면 mysql을 install 해줍니다.


설치가 완료되었다면 아래 코드를 입력해줍니다.

mysql.server start


갑자기 아래와 같은 에러가 떨어진다면?

아래 코드를 입력하면 된다.

brew services start mysql

mysql 설정하기

Would you like to setup VALIDATE PASSWORD component?
비밀번호 설정 질문입니다.
Y - 복잡한 비밀번호 설정
N - 간단한 비밀번호 설정

Remove anonymous users?
사용자 설정 질문입니다.
Y - 접속할때 mysql -uroot
N - 접속할때 mysql

Disallow root login remotely?
다른 사용자의 접속에 대한 질문입니다.
Y - 접속 불가능
N - 접속 가능

Remove test database and access to it?
TEST 데이터베이스 질문입니다.
Y - TEST DB 제거
N - TEST DB 유지

Reload privilege tables now?
변경 권한 적용에 대한 질문입니다.
Y - 적용
N - 적용X


All done! 이 나오면 설정 완료!!
나가려면 mysql> exit 또는 quit를 입력하면 됩니다.

반응형

테이블 생성하기

show databases;
→ 데이터베이스를 확인
use mysql;
데이터베이스를 체인지


아래의 명령어로 모든 table 리스트를 확인한다.

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '해당 DataBase'


데이터 베이스 생성

CREATE DATABASE 원하는DB이름 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

use 새로만든DB명;
→ 실행하면 끝!


mysql 삭제하기

sudo rm -rf /usr/local/var/mysql // mac 노트북 비밀번호 입력 sudo rm -rf /usr/local/bin/mysql* sudo rm -rf /usr/local/Cellar/mysql


오류 고치기!!!

mysql.server stop 을 실행했을시 오류 메세지

ERROR! MySQL server PID file could not be found!

  • 먼저 ps aux | grep mysql 로 확인
  • -pid-file=/usr/local/var/mysql/gimjiseon-ui-MacBookPro.local.pid 라는 피드를 생성을 해준다
    • echo 69126 > /usr/local/var/mysql/gimjiseon-ui-MacBookPro.local.pid
    • 생성을 했으면 sudo kill 69126 로 죽인다.
    • 끝 → mysql.server start 로 확인

왜 이런 오류가 나오냐?
mysql 서버를 제대로 stop 해주지 않았는데 지우고 다시깔았기 때문임,,
sudo pkill mysql 로 전부 죽이거나 위의 방법으로 없애준 다음 다시 재시작



반응형
반응형

라라벨 설치하는 방법은 공식 홈페이지에 보면 잘 나와있습니다.
laravel.kr/docs/8.x/valet
Mac OS를 사용하는 경우 발렛이라는 좋은 개발 환경이 있습니다.

Valet 설치하기

먼저 홈브루를 설치해야 합니다.

홈브루를 설치하셨거나 원래 있으시다면 먼저 업데이트를 해줍니다.

brew update


그다음 설치해야 할 프로그램을 찾아줍니다.

brew search php


원하는 버전의 php를 install 해줍니다.

brew install php

 

컴포즈 설치

그다음 컴포즈를 설치를 해줍니다.
getcomposer.org/ (자세한 방법은 공식 홈페이지에 나와있습니다.)

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"


현재는 composer를 실행시키려면 composer.phar 명령어를 입력해야 합니다.
귀찮기 때문에 composer 명령어 만으로도 실행시킬 수 있게 해주는 코드를 실행하겠습니다.

mv composer.phar /usr/local/bin/composer

composer 명령어를 입력해서 잘 실행되는지 확인을 해줍니다.

라라벨 설치하기

먼저 라라벨 인스톨러를 설치해야 합니다. 터미널에 아래 코드를 입력합니다.

composer global require "laravel/installer"


설치가 되었다면 라라벨이 실행될 수 있게 PATH를 설정해주어야 합니다.

vi ~/.bash_profile

위의 명령어를 입력하여 bash_profile 파일을 열고, esc + i 버튼을 눌러 insert 모드로 전환한다.

아래의 코드를 입력합니다.

export PATH="$PATH:$HOME/.composer/vendor/bin"

코드를 입력했으면 esc + :wq! 입력 (저장하고 나가기)

만약 터미널이 bash가 아닌 zsh라면 .bash_profile이 아닌 .zshrc 라는 파일에 경로를 입력해야 한다!

설치가 되었다면 아래의 코드로 발렛을 설치해줍니다.

composer global require laravel/valet


그다음으로 아래의 코드를 실행시킵니다.

valet install
반응형

 

laravel new blog

위의 코드를 입력하면 blog라는 라라벨의 새로운 프로젝트가 생성이 됩니다.

만약 라라벨의 특정 버전으로 프로젝트를 생성하고 싶다면 아래 코드를 입력합니다.

composer create-project --prefer-dist laravel/laravel blog "5.4.*"


만든 프로젝트 폴더로 들어간 후 php artisan 입력

→ 자세한 설명들이 나와있다

php artisan serve를 입력하면 터미널에 주소가 뜹니다.


브라우저에 주소 http://localhost:8000/ 를 입력하면 아래 사진과 같은 화면이 뜬다면 성공!!

 


valet에는 park와 link라는 명령어가 있습니다.
link 명령어는 http://128.0.0.1:8000/ 의 주소를 다른 naver나 google과 같은 사이트처럼 http://naver.com로 접속 가능하도록 해줍니다.

valet links를 입력하면 현재 등록이 돼있는 url 주소가 나옵니다.
valet link [원하는 주소이름] 을 입력하면 입력한 주소 이름으로 url이 생성됩니다. 

생성한 URL 주소로 들어가면 같은 화면이 뜹니다.


삭제는 valet unlink [원하는 주소] 로 간단하게 삭제가 가능합니다.

반응형
반응형

배열 크기 조회

int count (array $data)

$data의 길이를 조회한다.

 

 

연관배열

라벨을 갖는 배열

  • 배열의 각 행과 열에 라벨을 적용하여 key와 value의 쌍으로 정의한다.
  • key는 문자열 형태로 지정하고, “=>”기호를 사용하여 값을 명시한다.

 

1차 연관 배열 만들기

$myarray = array("key" => value, "key" => value);

 

빈 배열을 확장하기

$myarray = array();
$myarray["key"] = value;
$myarray["key"] = value;

 

연관배열 값을 활용하기 : 배열의 값은 key를 활용하여 접근한다.

$myvalue = $myarray["key"]; // 배열의 값을 다른 변수에 복사하기
echo($myarray["key"]); // 배열의 값을 출력하기

 

 

2차 연관 배열

2차 배열의 행과 열에 대한 key를 적용할 수 있다.

$myarray = array(
	“key”=> array(“key”=> value, “key”=> value ), 
	“key”=> array(“key”=> value, “key”=> value )
);

배열의 값에 인덱스가 아닌 key를 활용하여 접근할 수 있다

$myvalue = $myarray["key"]["key"]; // 배열의 값을 다른 변수에 복사하기
echo($myarray["key"]["key"]); // 배열의 값을 출력하기

 

 

복합 배열

  • 인덱스를 사용하는 형태와 라벨을 사용하는 형태가 함께 사용되는 경우
  • 일반적으로 행은 인덱스를 사용하고, 열은 라벨을 사용한다.
$myarray = array(
	array(“dname”=> “컴퓨터학과”, “loc”=> “공학관”),
	array(“dname”=> “국문학과”, “loc”=> “어학관”)
);

배열 값의 활용

$dname = $myarray[0]["dname"]; // 배열의 값을 다른 변수에 복사하기
echo($myarray[1]["loc"]); // 배열의 값을 출력하기

 

 

foreach 구문

  • 연관배열은 index 번호가 없기 때문에, 일반적인 for문으로의 탐색이 불가능하다.
  • foreach 구문은 배열을 스캔 하면서 배열의 라벨과 값을 각각 다른 변수에 복사하는 기능을 갖는다.
foreach ($배열 as $key => $value) {
}
  • 주어진 배열의 행을 스캔하면서 라벨 의 이름은 $key 변수에 복사한다.
  • 배열의 값은 $value 변수에 복사한다.

 

예시

<?
    header("Content-Type: test/html; charset=UTF-8");
    
    $array = array('name' => '김지선', 'birthday' => '1115');
    
    echo("<h1>".$array['name']."</h1>");
    echo("<h1>".$array['birthday']."</h1>");
    
    foreach($array as $key => $value) {
    	echo("<h1>".$key.'='.$value."</h1>");
    }
?>

 

반응형

문자열을 배열로 변환

array explode (string $delimiter, string $string)
  • delimiter 문자열을 경계로 나누어진 string의 부분 문자열로 이루어지는 배열을 반환한다.

  • $delimiter : 경계 문자열 (구분자)
  • $string : 입력 문자열 (원본 문자열)

  • $delimiter가 빈 문자열인 경우 : FALSE
  • $string에 $delimiter가 포함되지 않은 경우 : $string만 들어 있는 한 칸으로 구성된 배열

 

예시 - 구분자를 사용하여 문자열을 배열로 변환

<?
    header("Content-Type: test/html; charset=UTF-8");
    
    $str = 'PHP,JAVA,PYTHON';
    
    // 콤마를 기준으로 문자열을 자르고, 배열로 리턴
    $data = explode(',', $str);
    
    for($i=0; $i<count($data); $i++) {
    	echo("<h1>".$data[$i]."</h1>");
    }
?>

 

 

배열 일괄 출력

mixed print_r ( mixed $expression, [ bool $return='false' ] )
  • 변수나 배열에 대한 정보를 사람이 읽을 수 있는 방법으로 표시한다.

  • $expression : 출력할 내용
  • $return : false일 경우 출력.

  • $return이 true로 지정된 경우 출력할 내용을 리턴한다.

 

배열인지 확인하는 함수

bool is_array ( mixed $var )

배열일 경우 true를 리턴한다.

 

 

배열 병합

array array_merge ( array $arr1 [, array $arr2 … ] )

 

 

배열 정렬

bool sort( array &$array )
bool rsort( array &$array )
  • 파라미터로 전달된 배열의 내용을 정렬한다.
  • sort() 함수 : 오름차순
  • rsort() 함수 : 내림차순

  • $array : 정렬 대상.
    • 이 함수는 파라미터를 전달하지 않고, 파라미터에 대한 참조를 전달하기 때문에 이 함수를 호출할 때 전달된 파라미터 원본 자체가 정렬된다.
  • 성공할 경우 TRUE, 실패할 경우 FALSE

 

 

반응형

'프로그래밍 언어 > PHP' 카테고리의 다른 글

[PHP] 문자열 함수  (0) 2020.12.27
[PHP] PHP 설치하기  (0) 2020.12.23

+ Recent posts