Laravel 에서 xdebug 를 통해 디버깅하는 과정을 알아본다.


0. PHP 설치

brew install php71

1. Xdebug 설치 


brew install homebrew/php/<php-version>-xdebug 에서 <php-versino>을 자기에 맞는 php 버전으로 치환 아래는 예제

brew install homebrew/php/php71-xdebug


2. Xdebug 설정 변경하기


맥에서의 위치: /usr/local/etc/php/7.1/conf.d


[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.remote_autostart=1
xdebug.default_enable=1
xdebug.remote_port=9001
xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM


3. phpstorm run configuraiton 추가


- run configuration 에 들어간후 아래와 같이 PhpWeb Application 을 추가한다



- severs 옆버튼인 ...을 클릭해서 서버를 추가해준다


- + 버튼을 클릭하여 서버를 추가해주고

Host부분을 디버깅하고자 하는 주소를 입력한다

* 주의사항

Use path mappings 를 체크해제한다



Ok를 눌러 돌아온다


4. Phpstorm 의 설정부분에서 Php항목의 Debug 항목을 선택 DBGp Proxy 부분을 아래 스크린샷과 같이 변경. 

IDE key와 Port는 위 Xdebug설정에 맞춰서 입력해주면 된다. 자기 입맛에 맞게 커스터마이즈 하면된다


5. 실제 디버깅하고 싶은 곳에 브레이크 포인트를 설정하고 Debug 버튼을 클릭하면 아래 화면과 같이 해당하는 곳에서 디버거가 멈춰져 있는 것을 확인 가능하다. 



참조: 

1. https://laravel-news.com/xdebug-phpstorm-valet

'PHP > Laravel' 카테고리의 다른 글

Laravel 구동을 위한 Vagrant 설치 및 설정  (0) 2016.09.13

PHP 프로젝트를 이용할떄 Composr 를 이용해서 본인이 사용한 작성한 클래스를 불러와 사용하는 방법에 대해 서술한다. 


절차:


0. composer 설치및 composer init

1. PSR-4 표준에 맞는 폴더구조로 클래스파일과 함께 생성 (이때 네임스페이스에 주의한다)  

2. composer.json 에 폴더 연결 

"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"tests/PassportTestCase.php"
],
"psr-4": {
"Tests\\": "tests/"
}
},

3. composer auto-dumpload 를 하면 클래스 위치들을 맵핑해주는 파일이 자동 생성된다.

4. 클래스를 사용하고자 하는 파일에서 autoload.php 파일 로드


** 주의점:

1. 클래스명과 파일명이 일치

2.한파일에는 클래스 하나만 존재


예제 파일구조를 본다

src

autoload.php

index.php

Users

User.php

UserDetail.php



index.php 에서 사용하자하면

require("./autoload.php")


- User.php 

<?php namespace Users;


class User { }


- UserDetail.php 

<?php namespace Users;


class UserDetail { }


- index.php


<?php

use Users\User;

$user = new User();








'PHP > PHP 문법' 카테고리의 다른 글

설치된 PHP가 threadsafe 혹은 nonthreadsafe 인지 알아내는법  (0) 2016.07.23
DB접속 (MySQL 기준)  (0) 2016.04.21

Image result for laravel

 

PHP 프레임워크계를 평정하고 있는 Laravel 

MVC 기반의 프레임 워크로 현재 많은 프로젝트들에 쓰이고 있다. 

 

 

 

라라벨 개발환경을 구성하는 방법은 두가지 방법이 있다.

 

 

1.  필요프로그램 설치

 

먼저 라라벨 개발환경이 미리 설정된 가상 머신 이미지 파일을 다운로드 받는 방법이 이다. 

 

A. https://www.vagrantup.com/ 에서 다운후 설치

 

 

B 가상 머신 설치 

 

vagrant 는 가상 에뮬레이터를 사용하므로 가상의 머신을 돌릴 에뮬레이터를 설치해야한다.

 

vmware 와  virtualbox 둘중에 선택하도록한다. 

 

virtualbox가 오픈소스이면서 무료이면서 이 글에서는 virtualbox를 사용한다. 

 

C. GIT 설치

 

git.org 에서 설치파일 다운로드 

 

Mac osx 같은 경우에는 brew 혹은 macports 를 이용해서 설치 가능

 

 

D. laravel/homestead 박스 추가 

 

설치를 완료했다면

 

vagrant box add laravel/homestead

 

2. 설정

 

MAC의 사용자 같은 경우는 terminal을 구동하고 

 

Windows 같은 경우는 방금 설치한 Git bash 를 활용해서 설치 

(Windows 10 같은 경우는 ubuntu bash 로도 가능) 

 

 

home folder로 가서 Homestead 파일을 다운받자

 

$ cd ~

 

$ git clone https://github.com/laravel/homestead.git Homestead

 

 

Homestead 폴더로 들어가서 초기 설정 파일 설치

 

bash init.sh 

 

명령어 실행후 .homestead 폴더가 생성된다. 

 

위부터 차근 차근 살펴보면

 

ip

memory

cpus: 

provider: 

 

Homestead.yaml 파일안에 아래 folders 항목이 있는 것을 볼수 있다.

 

folders:

    - map: ~/Code

      to: /home/vagrant/Code

folders 자신의 라라벨 파일이 있을곳의 document base 로 설정하자.

 

나중에 Code가 루트 폴더로 인식되어 

Code/public 에서 laravel 프로젝트의 public 역할을 한다. 

 

 

아래쪽을 

 

sites:

    - map: homestead.app

      to: /home/vagrant/Code/Laravel/public

 

 

hosts 파일 설정 ( 개발 컴퓨터에서 특정 주소를 칠경우 강제적으로 라우팅할수 있도록 해야한다 )

hosts 파일에 대한 자세한 내용은 여기를 참조

 

/etc/hosts

C:\Windows\System32\drivers\etc\hosts

 

 

192.168.10.10  homestead.app

 

 

가상환경에 연결할 ssh 키를 생성하자

 

ssh-keygen -t rsa -C "you@homestead"

 

ssh 키를 이용하여 homestead 환경에 접속해보자

 

Linux 환경이나 mac osx 환경에서는 이미 ssh 클라이언트가 설치되어 있을것이다.

 

Windows 에서는 putty 를 사용하자. 

 

 

참고:

1. https://laravel.com/docs/5.3/homestead

2. https://laravel.com/docs/5.3/installation

 

 

 

'PHP > Laravel' 카테고리의 다른 글

Laravel PHPStorm/Intelij Debugger 연결  (0) 2017.10.08

Unix 환경 (Linux, Mac OS) :
/path/to/php-i | grep -i "Thread"

 

Windows 환경:
php -i | findstr -i "thread"

 

위의 명령어 타이핑시 아래중에 하나를 리턴하게된다

 

1. Threadsafe일 경우:
Thread Safety => enabled

 

2. Nonthreadsafe일 경우:
Thread Safety => disabled

 

 

참고자료:

http://stackoverflow.com/questions/5799843/find-if-the-installed-php-is-threadsafe-or-nonthreadsafe

 

DB접속 (MySQL 기준)

- 학습 목적

요즘은 프레임워크에 내장된 우수한 시스템을 통해서 DB 접속정보를 알려주지만 

PHP 프레임워크 내부에서도 결국 PHP 코드를 이용해 접속하기 떄문에 내부구조를 이해하기위해 PHP로 DB 접속 하는 방법은 간단하지만 알아둘만한 가치가 있다. 

 

- DB 접속 방법

 

1. mysqli 

1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$servername = "localhost";
$username = "username";
$password = "password";   
$conn = new mysqli($servername$username$password);    
 
// 접속 확인
if ($conn->connect_error) {         
    die("Connection failed: " . $conn->connect_error);
 
// DB 접속 끊기
mysqli_close($conn)
cs


2. PDO 

1
2
3
4
<?php
    $conn = new PDO('mysql: host=DB주소;dbname=DB이름'$DB접속이름$비밀번호);
    // EX) $conn = new PDO('mysql:host=127.0.0.1:3306;dbname=mydb', "myid", "mypd");
?>
cs

PDO는 접속 종료에 관해서 함수로 제공하고 있지 않아 사용자가 접속 정보를 null 로 직접 처리해주어야만 합니다.

 

1
2
3
4
5
6
7
8
9
<?
$pdo = new PDO('mysql: host=DB주소;dbname=DB이름'$DB접속이름$비밀번호); 
$stmt = $pdo->prepare('SELECT * FROM my_table'); 
$stmt->execute();
 
// stmt 연결 끊기
$stmt = null
// DB 연결 끊기
$pdo = null;
cs



 보통  db_connection.php 파일로 따로 빼두어 모듈화를 시킨후 필요한 곳에 사용한다. 

+ Recent posts