HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

Cygwinを使ってSymfony 3 を導入してみる

はじめに

今回、新しいWebサイトを構築するにあたって、Symfony 3を使ってみたいと思ったのがきっかけです。
環境はWindows 10にCygwin上でSymfonyのプロジェクトを作成するところまでやりたいと思います。

流れ

まずはSymfony 3のダウンロード…なんですが

ダウンロードページはこちら
Download Symfony Framework and Components

とうとうsymfonyインストーラーが用意されたのですね。
しかし私はなぜかインストーラーが使えなかったので、

If you can't use the installer try instead the Symfony installation based on Composer.

の指示に従って、Composerを使うことに。
のっけから普通の道から外れていますが…がんばって進めます。

Composerのダウンロード

URLはこちらになります。
Installing and Configuring Symfony (The Symfony Book)

ということで、まずはComposerを入れなければいけません。
うーん、前提が多い…。
Installing Composer (The Symfony CookBook)

$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading 1.0.3...

Composer successfully installed to: /home/****/work/project/composer.phar
Use it: php composer.phar

成功した場合にはこのように表示されますが、PHPに必要なオプションが存在しないと失敗します。
根気よくTry and Errorしましょう。

Cygwinなら、インストーラーから探してインストールするのが楽かと思います。
PHPソースコードからリコンパイルしてももちろんOKです。

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

Composerを移動して、準備完了です。

ようやくSymfonyのプロジェクト作成

いざ、Symfonyのプロジェクトを作成するコマンドを叩きます。

$ composer create-project symfony/framework-standard-edition my_project_name

何かが足りない場合には、やはり失敗します。
成功するまでやはり懲りずにTry and Errorしましょう。
私の場合は、ctype_digit関数がないと言われてFatal Errorが発生していました。
関数の有無はこんな感じ↓で調べるとよいです。

$ php -r "echo (function_exists('ctype_digit'))? 'true'.PHP_EOL : 'false'.PHP_EOL;"

存在する関数名ならtrueが、存在しない関数ならfalseを返します。

それとPHPのデフォルトタイムゾーンの設定がされていないぞと怒られました。
php.iniにて設定をしておきましょう。

$ cat /etc/php5/php.ini | grep date.timezone
; http://php.net/date.timezone
;date.timezone =
date.timezone = "Asia/Tokyo"

途中でデータベースとメーラーの設定について聞かれます。
決まっていなければ、このままEnterを押して続行して問題ありません。

database_host (127.0.0.1):
database_port (null):
database_name (symfony):
database_user (root):
database_password (null):
mailer_transport (smtp):
mailer_host (127.0.0.1):
mailer_user (null):
mailer_password (null):
secret (ThisTokenIsNotSoSecretChangeIt):

my_project_nameの中身はこんな感じになっています。

$ ls -al
合計 109
drwxr-xr-x+ 1 **** ****     0 55 18:17 .
drwxr-xr-x+ 1 **** ****     0 55 18:17 ..
-rw-r--r--  1 **** ****   248 55 18:17 .gitignore
drwxr-xr-x+ 1 **** ****     0 55 18:17 app
drwxr-xr-x+ 1 **** ****     0 55 18:17 bin
-rw-r--r--  1 **** ****  2599 55 18:17 composer.json
-rw-r--r--  1 **** **** 70459 55 18:17 composer.lock
-rw-r--r--  1 **** ****  1065 55 18:17 LICENSE
-rw-r--r--  1 **** ****   973 55 18:17 phpunit.xml.dist
-rw-r--r--  1 **** ****  2285 55 18:17 README.md
drwxr-xr-x+ 1 **** ****     0 55 18:17 src
drwxr-xr-x+ 1 **** ****     0 55 18:17 tests
drwxr-xr-x+ 1 **** ****     0 55 18:19 var
drwxr-xr-x+ 1 **** ****     0 55 18:17 vendor
drwxr-xr-x+ 1 **** ****     0 55 18:17 web
$ php bin/console --version
Symfony version 3.0.5 - app/dev/debug

バージョンは何も指定しないと、3.0.5になるようですね。
(2016年5月5日現在)

最後に動作確認を

PHPのビルトインサーバーを立ち上げて、繋いでみるのが一番楽だと思います。

$ bin/console server:run

上記のコマンドを実行して、ブラウザから↓にアクセスします。
http://127.0.0.1:8000/

f:id:hrroct:20160505190113p:plain

正常に動いていれば、こんな↑ページにアクセスできると思います。


私の場合、ここでFatal Errorが出まして…直接ファイルを修正して突破しました。

$ vi my_project_name/var/cache/dev/classes.php

5863行目の } を ; にしました。
PHPをよく知らない人は、いじらないほうが無難かも…。


以上でした。