Phalconチュートリアル実装2(PHP Framework)

Phalconのマニュアルにあるチュートリアルを実装し、INVOという名のWebサイトが表示されるところまで行います。
INVOというのは、Phalcon側で作成したサンプルWebサイトです。
Phalconのインストールは以下の内容で済んでいる前提です。

Phalconインストール(CentOS7.2 + PHP5.4)
または
Phalconインストール(CentOS7.2 + PHP7.0)

Phalconのサンプルソース取得

以下のマニュアルを参考にチュートリアルのソースを取得し、「Hello!」を表示します。
https://docs.phalconphp.com/ja/latest/reference/tutorial-invo.html

今回は、「/var/www/html/」配下にサンプルソースを配置します。
git cloneすることで、html下にinvoフォルダが作成されます。

$ cd /var/www/html/
$ git clone https://github.com/phalcon/invo.git

cloneしてソースを取得したら、gitは不要かと思いますので、削除してしまってよいです。

$ rm -rf /var/www/html/invo/.git/

Nginxの設定

以下のマニュアルを参考にnginx.confまたは、conf.d配下のconfファイルにnginxの設定を行います。
https://docs.phalconphp.com/ja/latest/reference/nginx.html

今回は、マニュアルの「$_SERVER['REQUEST_URI'] をURIsとする場合」の設定を使用します。
プロジェクトフォルダは「/var/www/html/invo/」です。
rootに設定するディレクトリは「/var/www/html/invo/public」ですので、ご注意を!

server {
    listen      80;
    server_name localhost;
    root        /var/www/html/invo/public;
    index       index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        try_files     $uri =404;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index /index.php;

        include fastcgi_params;
        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

設定が完了したら、Nginxを再起動します。

CentOS7の場合

$ /bin/systemctl restart nginx

以上で完了です。
ブラウザでアクセスすると、INVOというWebサイトが表示されると思います。

もし、表示されない場合は以下の対応で直るかもしれません。

画面が表示されない場合の対応

Voltのエラー

もし、以下のようなエラーが画面に表示されたら、cache/volt/への書き込みが行えないためにエラーになっています。

Volt directory can't be written
#0 [internal function]: Phalcon\Mvc\View\Engine\Volt\Compiler->compileFile('/web/dev/ttonos...', '/web/dev/ttonos...', false)
#1 [internal function]: Phalcon\Mvc\View\Engine\Volt\Compiler->compile('/web/dev/ttonos...')
#2 [internal function]: Phalcon\Mvc\View\Engine\Volt->render('/web/dev/ttonos...', NULL, true)
#3 [internal function]: Phalcon\Mvc\View->_engineRender(Array, 'index/index', true, true, NULL)
#4 [internal function]: Phalcon\Mvc\View->render('index', 'index', Array)
#5 /web/dev/ttonosaki/iot/public/index.php(32): Phalcon\Mvc\Application->handle()
#6 {main}

cache/voltフォルダへの書き込み権限を与えてください。
手っ取り早くやるには、フォルダ権限を777にすると解決します。(セキュリティ的に微妙そうですが・・・)

$ chmod 777 /var/www/html/invo/cache/volt

デザイン(css)が適用されない

baseUriの設定が合っていない可能性があります。
以下のように修正すると直るかもしれません。

修正ファイル:/var/www/html/invo/app/config/config.ini

baseUri        = /invo/
↓
baseUri        = /

以上です。
お疲れさまでした。