諸事情で PHP を書く機運が高まっているので, PHP のローカルでの環境をメモしてみる. たぶん Arch Linux 系統の OS なら全部同じ方法でいけます. たぶん. 自分は Antergos でやりました.
この記事では, Apache, Twig についてのみ書きます.
Apache
PHP 本体と, 当然まずはサーバーが必要. 次でインストール.
% yaourt -S php php-apache apache
設定
Arch Wiki がものすごく頼りになるので基本はここを見てくれればいいと思います. 以下の記述もほとんど Arch Wiki の抜粋です.
/etc/httpd/conf/httpd.conf
に次の内容の変更を加える.
LoadModule mpm_event_module modules/mod_mpm_event.so
をコメントアウトLoadModule mpm_prefork_module modules/mod_mpm_prefork.so
をアンコメントLoadModule dir_module modules/mod_dir.so
より下に次の文を追加
LoadModule php5_module modules/libphp5.so
Include
のリストの一番最後に次の行を追加
Include conf/extra/php5_module.conf
動作確認
srv/http/index.php
に次のように書いて保存.
<?php phpinfo(); ?>
あとはサーバーを起動して, 動作確認をする. 次のコマンドを叩いたあとで http://localhost/ にアクセス.
% sudo systemctl start httpd.service
Twig
Twig っていうのは PHP のテンプレートエンジンのことです. 公式サイト: Homepage - Twig - The flexible, fast, and secure PHP template engine
こちらの記事が参考になりました.
composer
公式によれば, 推奨インストールは composer を用いる方法とのことなので, まずは composer をインストールしよう.
% yaourt -S php-composer
twig のインストール
composer を使って twig をインストール.
% cd /path/to/project_dir/ % composer require twig/twig:~1.0 % ls composer.json composer.lock vendor/
こんな感じになれば O.K.
動作確認
公式の PHP ファイルをそのまま使って動作確認を一応.
たとえば, composer をインストールしたディレクトリが test
だったとして話をすすめる. まずは /test/index.php
を次のように書く(Twig 公式からの引用)
<?php require_once '/path/to/vendor/autoload.php'; $loader = new Twig_Loader_Array(array( 'index' => 'Hello {{ name }}!', )); $twig = new Twig_Environment($loader); echo $twig->render('index', array('name' => 'Fabien')); ?>
test
を /srv/http/
に移動して apache を起動してブラウザでチェック. http://localhost/test/ にアクセス.
% sudo cp -r /path/to/test /srv/http/ % sudo systemctl start httpd.service
これで, Hello Fabien!
と表示されたらO.K.
Twig の使い方
とりあえずテンプレートエンジンとしてテストしてみよう. 以下の記述はここを参考にした.
以下では特に断りのない限りカレントディレクトリは test
であるものとして話をすすめる.
テンプレートディレクトリ
まずはテンプレートファイルを入れるディレクトリを作る. ここでは, twigtmp
とした. Twig のテンプレートファイルの拡張子は .twig
が標準っぽいのでそれにならう.
% mkdir tiwgtmp
てきとうなエディタで default.html.twig
を作成し, test/twigtmp
に保存. テストなので適当な HTML コードを書くことに.
<!DOCTYPE html> <html lang="ja"> <head> <title>{{ title }} | サンプル</title> </head> <body> <h1>サンプルテンプレート</h1> </body> </html>
{{ title }}
は変数にあたる.
test/index.php
を次のように編集する.
<?php require_once './vendor/autoload.php'; $loader = new Twig_Loader_Filesystem('./twigtmp/'); // テンプレートディレクトリを指定 $twig = new Twig_Environment($loader); $template = $twig->loadTemplate('default.html.twig'); // テンプレートファイルを指定 $template->display(array('title' => 'トップページ')); // 変数 title をアサイン ?>
こんな感じで, あとは例のごとく /srv/http/test
にでもおいてチェック.
機能はいろいろあるようだが, とりあえず最低限動くことを確認して今日は終わり.