[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
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
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 버전임
Slim Framework
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 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();
[이하 윈도우 환경, 리눅스 환경 모두 해당]
5. https://192.168.0.3/11/public/hello/tom 로 접속하면
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");
댓글목록
등록된 댓글이 없습니다.