#結論が先#
ZendFramwork2.5をインストールしたら、./zf2/vendor/
をまるっと
ZF2skeltonをインストールした./ZendSkeletonApplication/
直下に配置(コピーか移動)/public
直上これ大事。
http.conf の公開ポイントを
DocumentRoot "/var/www/ZendSkeletonApplication/public"
の様に書き換え。
これだけでいける(はず。時間が無い人はこれでやってみて)。
…でも後日、もっとスマートにできることを知ったので「PHP7の上で Zend Framework 2.5 を動かす②」書きました。
#コトの顛末#
「ほぼすべてのPHPアプリを爆速にしてしまう」と噂のPHP7がリリース。それを機に、だったら最初からその上で動くアプリを開発したらすてきじゃないかなと思い立ちまして作業を開始。
で、『きっとこのリソースを有効活用できるフレームワークは"Zend Framework 2.5"に違いない』という思い込みでこの基盤を選択し環境を整え始めました。「グーグル先生を頼りに何とかなるっしょ!」なんて高をくくったのは甘い考えでした。
ググってもググっても有効な解が見つからず、苛立ちと挫けそうな自分との闘いの日々。
モチベーションは「いまどこにもドキュメント無いってことは僕が初アップじゃね?ムフッ」との色気から。とりあえずココを見に来てくれることになるだろうから。
でもさらに多くの日々を過ごし、ようやく「え?あ!こういうことだったのか〜 orz<(動くぞ...)」というところまでたどり着きました。
やっぱりコードはちゃんと読まなきゃ。index.php
とかinit_autoloader.php
あたりじっくり読めばわかること。でもココに来られた方々はそんな暇なんてないから、ここにたどり着いたと思うのです。
それでこの記事はとりあえず動かすまでが目標。そしてのちの開発のヒントになればいいなって淡い期待を抱きながら、
目指すはココ!これを表示させるところまで。
#インストール環境の準備#
これらの環境の上に構築しました。
MacOS X EI Capitan
Vagrant
VirtualBox
CentOS6.5
PHP7
「PHP7」ってところが気になるかもしれませんが、ZF2.5を動かすまではサポート範囲内のPHP5.xバージョンなら同じだと思います。またマシンはMacですが、VirtualBox上にCentOS6.5を載せて…なので、これらの記事は『CentOS6にZF2.5を載せて動かす記事』と読み替えていただいてよいと思います。
VagrantはVirtualBox拡張用の出し入れ自在でインテリジェントなカラーボックスみたいなもんですね。
vagrant で centosを使ってみる を参考にしてください。
続いてPHP7。この上で動かせるなら爆速アプリに生まれ変われるっていわれているPHP7、これがリリースされるのを心待ちにしておりました。親切な方のこんな記事を参考にインストル。
簡単!CentOS 7.1にPHP7.0をさくっとyum installする方法 ←わたしの環境では、ApacheでPHPが動いてくれませんでした(構成も深い階層に入っている)。
なので、確実に動いてくれてPHPの構成もこれまでと同じようになってくれる、VagrantにCentOS7&PHP7のLAMP環境を構築する がいいでしょうね。MySQLとPHPMyAdmin入りです。
composerでのインストールで必須なエクステンションを入れましょう
sudo yum --enablerepo=epel,remi,remi-php70 install php70-php-xml php70-php-xmlrpc
xmlrpcはいらないか。
もし既にPHP5.xが入っていて入れ替えたいならPHP5.xの諸々を全部アンインストールしないと動かないかも。
このあたり参考に頑張ってみてください。 CentOS6のPHP5.3をPHP5.4に入れ替える
#Zend Framework 2.5 を入れる前準備#
英語ドキュメントしかありませんが、頑張って読んでみると『2.5以降は_composer_でインストールしてね。downloadファイル一式は用意しないからね』というのが読み取れます。いよいよcomposerをPHP管理のスタンダードにするとZend社は決めたみたいですね。
##Composer必須##
ということで、ZF2.5以降を使用したければComposerを使えなきゃダメってことになりました。
composerインストール
##Gitは入れておいた方がいいよ##
composer.jsonと周辺環境がGitHubで提供されています。既にZF2から動作ポイントの構造一式はスケルトンとして提供されていますから馴染み深いと思います。
ダウンロードしてファイルを展開するのでも良いと思います(が、パーミッションにハマらないでね)。
ようやくGit使い慣れた僕はせっかくなのでgitをインストールしてこれを経由させることにしました。
Gitのインストール
#さぁZend Framework 2.5 を入れよう#
ZF2.5はcomposer経由でインストールすることになってました。
そのためには、comopser.jsonファイルを作成しなければならないのですが、正しい作り方はまた別の記事に譲るとして、確実に手っ取り早くやるにはやはりZend社のGitHubリポジトリでしょってことで探したらありました。
ZF2リポジトリ
ザッと中身を確認すると、フレームワークの本体はやはり無いみたいで、composerを実行するといけるように環境を整えたもの用意しましたという感じです。
では、それぞれのお好みの方法でファイルを展開しましょう。この記事ではGitを使って整えます。
ある人はDownload ZIP
からファイルを取得してアップロードという方もいらっしゃることでしょう。でもGit、超便利。いまさら聞けないgitの使い方
これに従ってやるなら、zf2のリポジトリ画面の中央辺りにhttpsでクリップボードにコピーしてくれそうなボタンがあるのでクリック。そしてコマンドラインに
git clone https://github.com/zendframework/zf2.git
と打ち込んで実行。しばらくすると実行したディレクトリに/zf2
ディレクトリが追加されます。作業ディレクトリzf2
に移しましょう。
cd zf2
続いて、先ほどインストールしておいたコンポーザーを実行してインストールしますが、たぶんpathが通っていないところに入れてしまっていると思うので、展開したzf2
ディレクトリ直下にコピーしましょう。
sudo cp /(インストールしたディレクトリpath)/composer.phar composer.phar
さぁいよいよですよ。
sudo php composer.phar install
これでZendFramework2.5がインストールできました。
中身を確認すると以前と構成がぜんぜん違うことに気づかれると思います。どうもvendor
の中に集約したみたいですね。
このvendor
あとで使います。
##公開ディレクトリを用意##
続いて、ZF2スケルトンを入れて公開ポイントを用意しましょう。
それぞれのお好みの環境があると思いますが、今回はCentOS6.5ではデフォルトでApach2.2が動きますので、そこの公開ディレクトリの近くに配置します(理由は後述するhttpd.confの書き換えとか他の設定が面倒だったから)。
cd /var/www
git clone https://github.com/zendframework/ZendSkeletonApplication.git
これでスケルトンがインストールできました。
これを動くようにします。
##ZF2.5を動かす##
ZendFramework2.5の本体からvendor
ディレクトリをまるっとコピーしてきます。
まず作業ディレクトリを公開ポイントとなるpublic
直上に移動。デフォルトではZendSkeletonApplication
内にインストールされているので、作業ディレクトリをその中に移動させましょう。
cp /var/www/ZendSkeletonApplication
ls -l
public
ありますか?パーミッションは適切ですか?では今いるこの階層にZF2.5本体が一式入っているvendor
をコピーして持ってきましょう。
sudo cp -r /(ZF2.5をインストールしたディレクトリまでのpath)/zf2/vendor vendor
え?若干荒業ですか?他にいい方法があったら是非コメントでご指摘下さいm(__)m
ただこうすれば、index.php
もinit_autoloader.php
も無傷で動かせるはず。
これで環境は整いました。最後はhttpd.conf
をZF2スケルトンのpublic
を公開ディレクトリになるように調整しましょう。
sudo vi /etc/httpd/conf/httpd.conf
ここに以下の行を追加。前のをコメントアウト忘れずに。
DocumentRoot "/var/www/ZendSkeletonApplication/public"
保存したらhttpd
の再起動。
sudo service httpd restart
ではブラウザでアクセスしてみましょう。IPアドレスはそれぞれ設定した環境に合わせて入力。
いかがですか?見られましたか?
こういう感じでとりあえずは動かせました。
この記事はZendFramework2.5系の最初の記事みたいなので、これを皮切りに色々と他の皆さんの知識がわーっと上がってきてもっと良い感じになってくれればと願っております。
そういうわけで、色々とご意見あると思いますので、コメントくだされば幸いです。