[Slim] slim/slim(PHP micro framework) 설치/기본세팅 > Web/PHP/API

본문 바로가기
사이트 내 전체검색

Web/PHP/API

[Slim] slim/slim(PHP micro framework) 설치/기본세팅

페이지 정보

작성자 sbLAB 댓글 0건 조회 3,474회 작성일 22-12-25 15:13

본문

composer2.51 + php8(xampp) + slim4


Slim 4 Documentation

https://www.slimframework.com/docs/v4/


[Windows 환경] 


[composer 설치]

https://getcomposer.org/download/ 


1. php.exe 파일 위치 확인 - [ XAMPP 설치환경임]

D:\xampp\php\php.exe


2. Composer-Setup.exe  설치  중 아래 오류 메시지 

----------------------

Program Output:

Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

----------------------

[오류 해결]
php.ini => 아래 XDebug 주석처리 하고 설치 재시도

[XDebug]
;zend_extension = D:/xampp/php/ext/php_xdebug-3.1.6-8.1-vs16-x86_64.dll
;xdebug.mode=debug
;xdebug.start_with_request=yes
;xdebug.client_port=9003
--------------------------

3. Composer 설치완료
 - 어느 디렉토리에서나 cmd로 composer 실행 가능한 상태임
 - 기본 Composer 설치된 디렉토리 : C:\ProgramData\ComposerSetup\bin 
a2e6f9231911ca29e67bbbb478917ef0_1671949020_4164.jpg
 
4. Slim 초기세팅(필수 라이브러리, composer.json 자동생성) 
※ 실제 프로젝트 진행할때는 6.번 처럼 

웹루트 디렉토리가 D:\xampp\htdocs\11 이라면.. D:\xampp\htdocs\11 이동
cd D:\xampp\htdocs\11  
D:\xampp\htdocs\11>composer require slim/slim:"4.*"
D:\xampp\htdocs\11>composer require slim/psr7

아래와 같이 composer.json 파일 생성되고, vendor 폴더(라이브러리) 생성됨, 
{
    "require": {
        "slim/slim": "4.*",
        "slim/psr7": "^1.6"
    }
}

5.  php 실행 스크립트를 저정 할 public디렉토리 생성 하고 public 안에서 php스크립트 작성 시작
D:/xampp/htdocs/11> mkdir public 

a2e6f9231911ca29e67bbbb478917ef0_1671950012_7972.jpg 


6. 실제 프로젝트 진행할때 -> CMD창에서 slim 프로젝트(11) 생성하는 예
cd D:/xampp/htdocs/ 
composer create-project slim/slim 11  <- slim4(단순하고 심플함[추천])
또는 composer create-project slim/slim-skeleton 11 <- slim4 기능이 대부분 예제 구현이 되어 있으나 복잡.
cd 11
code .

#composer create-project slim/slim projectname <- slim4 가벼운 기초구성
//composer create-project slim/slim-skeleton projectname <- slim4 제공기능 대부분 구성(복합+복잡)

#cd projectname
#code . <- Visual Code Run

composer create-project slim/slim projectname  <- slim/slim  많이 사용됨(평점 높음).
※ slim/slim <= 은 기본적으로 slim4.x 버전임
63a6e86d2204377f8373f1d38a90f1c6_1671970761_9705.jpg 

Slim Framework

https://github.com/slimphp <- 이곳에 slim/slim 등 Popular repositories 있음.

composer create-project slim/slim-skeleton [my-app-name] 

composer create-project odan/slim4-skeleton [my-app-name]


D:/xampp/htdocs/11/public 안에 아래와 같이 기본틀 index.php 파일 생성
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();

$app->addErrorMiddleware(true, true, true);
$app->setBasePath("/11/public");

$app->get('/', function (Request $request, Response $response, $args) {
    $response->getBody()->write("Hello world!");
    return $response;
});

$app->run();
 

[php.ini => 설치 과정에서 주석 처리한 XDebug 주석 다시 해제]
---------------------
[XDebug]
zend_extension = D:/xampp/php/ext/php_xdebug-3.1.6-8.1-vs16-x86_64.dll
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
--------------------------


[Linux 환경]  

[Ubuntu 리눅스 + XAMPP 설치환경 기준임]

※ /opt/lampp/htdocs/11 를 웹루트로 결정하고 /opt/lampp/htdocs/11 로 이동해서 아래작업 시작


1. php 파일 위치 확인

/opt/lampp/bin/ 안에 php 실행파일 있음 => /opt/lampp/bin/php


2. composer 설치, 아래와 같이 각 행 모두 실행
#/opt/lampp/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
#/opt/lampp/bin/php composer-setup.php 
#/opt/lampp/bin/php -r "unlink('composer-setup.php');"
------------------- 
All settings correct for using Composer
Downloading...

Composer (version 2.5.1) successfully installed to: /opt/lampp/htdocs/11/composer.phar
Use it: php composer.phar
-------------------

※ /opt/lampp/htdocs/11 아래 composer.phar (composer 실행 파일임)파일 생성됨

2. composer 를 어디에서나 실행가능 하도록 /user/local/bin/ 디렉토리로 이동
(파일 명을 편리하게 composer 로 변경 이동,  composer.phar ->composer)

#mv composer.phar /user/local/bin/composer

2. composer 설치 완료됨, 
#composer -V    //버전확인
-------------------
Composer version 2.5.1 2022-12-22 15:33:54
-------------------

3. /opt/lampp/htdocs/11 에 Slim4 초기설정
#composer require slim/slim:"4.*" 
#composer require slim/psr7 
위 명령을 실행하면, 오류가 남(XAMPP 환경인 경우).
/usr/bin/env: php: No such file or directory

composer 가 /opt/lampp/htdocs/11 안에 Slim4 라이브러리를 설치하려는 과정에서 
php 실행파일을 찾을수 없기 때문임. 
composer(리눅스버전)는 php 실행파일을 기본적으로 /usr/local/bin/php 에서 찾음(어디서나 php  실행 될수 있는 경로 의미)
그러나, xampp 는 /opt/lampp/bin/php 에 위치한다.
아래 명령어로  /usr/local/bin/php 심볼릭 링크를 만들어서 /usr/local/bin/php 경로에서도 php가 실행 가능하게 함.
#ln -s /opt/lampp/bin/php /usr/local/bin/php

3. /opt/lampp/htdocs/11 에 Slim4 초기설정 시작
#composer require slim/slim:"4.*" 
#composer require slim/psr7 

4. 웹루트 생성
#mkdir public
#cd public
[index.php 생성]
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();
$app->addErrorMiddleware(true, true, true);
$app->setBasePath("/11/public");

$app->get('/', function (Request $request, Response $response, $args) {
    $response->getBody()->write("Hello world!");
    return $response;
});

$app->get('/hello/{name}', function(Request $request, Response $response, $args){
    $name=$args['name'];
    $response->getBody()->write("Hello My Bro222! $name");
    return $response;
});


$app->run();


[이하 윈도우 환경, 리눅스 환경 모두 해당]
 
index.php 라우팅 연결등에 문제가 있어, 페이지 오류가 발생한다.

Not Found
The requested URL was not found on this server.


[해결] 
방법1) /opt/lampp/htdocs/11/public 안에 아래내용의  .htaccess 파일을 생성한다.
--------------------
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
------------------

방법2) .htaccess 파일을 생성하지 않고, httpd.conf 아파치 설정파일에서 웹루트를 직접 설정해준다.[권장]

<Directory "D:/xampp/htdocs/11/public">
   <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
   </IfModule>

   Options Indexes FollowSymLinks Includes ExecCGI
  AllowOverride None 
   Require all granted
</Directory>


[방법1]로 할때, 계속하여 페이지오류가 나는 경우는
(방법2는 아파치서버에서 명시적으로 설정했으므로 정상작동 )  
아파치 httpd.conf 설정에서 최상 웹루트 디렉토리(D:/xampp/htdocs) 설정을 보면, 

AllowOverride All 이 아닌, AllowOverride None 로 되어 있는 경우 .htaccess 를 사용할 수 없다.
.htaccess 를 사용하려면 AllowOverride All 로 설정 해준다.

-------------------------------
DocumentRoot "D:/xampp/htdocs"
<Directory "D:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
  AllowOverride All
    Require all granted
</Directory>
------------------------------

[확인사항]
예) /opt/lampp/htdocs/11/public 아래에 index.php 파일소스에서 기본 경로 확인
예1) /opt/lampp/htdocs/11/public   ===>    $app->setBasePath("/11/public"); 
예2) /opt/lampp/htdocs/slim/webapi/public  ===> $app->setBasePath("/slim/webapi/public"); 


댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
277
어제
342
최대
1,279
전체
218,512

그누보드5
Copyright © sebom.com All rights reserved.