zend-expressive-skeleton을 GoogleAppEngine/PHP에 설치
Google App Engine에 설치했으므로 비망 메모입니다.
설치한 zend-expressive 버전은 1.0.0입니다.
--2016.06.10 추가 start--
이 기사의 내용을 토대로,
별기사 「 zend-expressive-skeleton을 GoogleAppEngine/PHP용으로 맞춤설정 」
으로, 간단하게 인스톨 할 수 있는 커스터마이즈판 스켈레톤을 준비했습니다.
--2016.06.10 추가 end--
skeleton 설치
동작을 쉽게 확인할 수 있도록 해골을 설치합니다.
템플릿 엔진을 "Plates"로 설정한 것 외에는 기본값으로 유지됩니다.
$ composer create-project zendframework/zend-expressive-skeleton <project dir>
Minimal skeleton? (no default middleware, templates, or assets; configuration only)
[y] Yes (minimal)
[n] No (full; recommended)
Make your selection (No):
Which router do you want to use?
[1] Aura.Router
[2] FastRoute
[3] Zend Router
Make your selection or type a composer package name and version (FastRoute):
Which container do you want to use for dependency injection?
[1] Aura.Di
[2] Pimple
[3] Zend ServiceManager
Make your selection or type a composer package name and version (Zend ServiceManager):
Which template engine do you want to use?
[1] Plates
[2] Twig
[3] Zend View installs Zend ServiceManager
[n] None of the above
Make your selection or type a composer package name and version (n): 1
Which error handler do you want to use during development?
[1] Whoops
[n] None of the above
Make your selection or type a composer package name and version (Whoops):
project dir 바로 아래에 app.yaml 추가
Google App Engine에 필요한 설정 파일입니다.
우선 샘플 화면을 표시할 수 있는 정도의 설정으로 했습니다.
module: default
version: 1
runtime: php55
api_version: 1
handlers:
- url: /favicon.ico
static_files: public/favicon.ico
upload: public/favicon.ico
- url: /zf-logo.png
static_files: public/zf-logo.png
upload: public/zf-logo.png
- url: /.*
script: public/index.php
로컬 환경에서 동작 확인(실패)
참고 : htps : // c ぉ d. 오, ぇ. 코 m / 아펜 기네 / 도 cs / php / 쿠이 cks rt # st_ te _ e p ぃ 카치 온
항례의 SDK로 동작 확인해 봅니다.
$ dev_appserver.py <project dir>
브라우저에서 localhost:8080 에 액세스해 보면.
주름 fatal error입니다.
Catchable fatal error: Argument 1 passed to Zend\ServiceManager\Config::__construct() must be of the type array, null given, called in /Users/shuhei/Documents/src/googleAppEngine/phpzend/config/container.php on line 11 and defined in /Users/shuhei/Documents/src/googleAppEngine/phpzend/vendor/zendframework/zend-servicemanager/src/Config.php on line 65
config/autoload 부하의 정의 파일을 glob 할 수 없어서 곤란하고 있는 것 같습니다.
Load configuration for Google App Engine
정의 파일의 읽어들이기는, config/config.php 로 실시하고 있습니다만, 문제점은 이하의 2점입니다.
Google App Engine용 로드 프로세스를 만들었습니다.
다음 내용을
config/config-gae.php
로 배치합니다.
config/config-gae.php
<?php
use Zend\Stdlib\ArrayUtils;
/**
* Configuration files are loaded in a specific order. First ``global.php``, then ``*.global.php``.
* then ``local.php`` and finally ``*.local.php``. This way local settings overwrite global settings.
*
* The configuration can be cached. This can be done by setting ``config_cache_enabled`` to ``true``.
*
* Obviously, if you use closures in your config you can't cache it.
*/
$cachedConfigKey = 'cache_app_config';
$mc = new Memcached();
// Try to load the cached config
if(!($config = $mc->get($cachedConfigKey))) {
if ($mc->getResultCode() == Memcached::RES_NOTFOUND) {
$config = [];
}
$confdir = __DIR__ . '/autoload';
if ($handle = opendir($confdir)) {
$pattern = '/(global|local)\.php$/';
$files = [];
while (false !== ($file = readdir($handle))) {
if (preg_match($pattern, $file) === 1) {
$fn = implode('.', array_reverse(explode('.', $file)));
$files[] = $fn;
}
}
asort($files);
foreach($files as $file) {
$fn = implode('.', array_reverse(explode('.', $file)));
$config = ArrayUtils::merge($config, include $confdir.'/'.$fn);
}
closedir($handle);
}
// Cache config if enabled
if (isset($config['config_cache_enabled']) && $config['config_cache_enabled'] === true) {
$mc->set($cachedConfigKey, $config);
}
}
// Return an ArrayObject so we can inject the config as a service in Aura.Di
// and still use array checks like ``is_array``.
return new ArrayObject($config, ArrayObject::ARRAY_AS_PROPS);
발신자
config/container.php
을 편집합니다.
config/container.php
// Load configuration
//$config = require __DIR__ . '/config.php';
$config = require __DIR__ . '/config-gae.php';
로컬 환경에서 동작 확인(성공)
SDK의 웹 서버가 자동으로 다시로드되므로,
브라우저를 다시 로드하면 정상적으로 표시됩니다.
app_config.php의 끝에서 언급했듯이,
오류 화면 템플릿도 제공되므로 404 Not Found 화면도 표시할 수 있습니다.
배포
참고 : htps : // c ぉ d. 오, ぇ. 코 m / 아펜 기네 / cs / php / 쿠키 cks rt #에서 p y y r r p
htps : // 이런. 로 ゔぉぺぺrs. 오, ぇ. 코m/
에서 프로젝트를 만들고 해당 프로젝트 ID로 배포합니다.
$ appcfg.py -A YOUR_PROJECT_ID update app.yaml
http://(YOUR_PROJECT_ID).appspot.com/
앞으로 개발을 진행하는데 있어서 어떠한 문제가 나올지 모르겠지만, 일단 첫걸음, 완료입니다.
Reference
이 문제에 관하여(zend-expressive-skeleton을 GoogleAppEngine/PHP에 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/curious-eyes/items/a6d3c5c2017ce38426cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)