勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法

   2024/02/20  PHP

「Composerで○○をインストール」というのをよく見かけるがComposerすら何なのか分かっていなかった。今後使うかどうかは置いておいてComposer自体のインストール方法とmonolog及びTwigをComposer経由インストールする方法のメモ。

 

Composerのインストール

ドキュメントルート(/var/www/htmlで想定)とかで以下コマンドで導入可能。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar
wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar
wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar

 

monolog

インストール方法

同ディレクトリで以下コマンドでインストールする。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php composer.phar require monolog/monolog
php composer.phar require monolog/monolog
php composer.phar require monolog/monolog

/var/www/html/vendor/monologディレクトリにインストールされる。

使用方法

以下のような形で使用する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
ini_set( 'display_errors', 1 );
require('./vendor/autoload.php');
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;
$logging_path = 'log/error.log';
$log = new Logger('test');
$output = "[%datetime%] %level_name% %message% %file% %line%\n";
$formatter = new LineFormatter($output);
$stream = new StreamHandler($logging_path, Logger::DEBUG);
$stream->setFormatter($formatter);
$log->pushHandler($stream);
$log->pushProcessor(function ($record) {
$record['file'] = $record['context']['file'];
$record['line'] = $record['context']['line'];
return $record;
});
function debug($message, $depth=''){
global $log;
$backtrace = debug_backtrace();
$key = isset($backtrace[$depth]) ? $depth : 0;
$file = $backtrace[$key]['file'];
$line = $backtrace[$key]['line'];
$context = array('file' => $file, 'line' => $line);
$log->addInfo($message, $context);
}
debug('debug message!!');
<?php ini_set( 'display_errors', 1 ); require('./vendor/autoload.php'); use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Formatter\LineFormatter; $logging_path = 'log/error.log'; $log = new Logger('test'); $output = "[%datetime%] %level_name% %message% %file% %line%\n"; $formatter = new LineFormatter($output); $stream = new StreamHandler($logging_path, Logger::DEBUG); $stream->setFormatter($formatter); $log->pushHandler($stream); $log->pushProcessor(function ($record) { $record['file'] = $record['context']['file']; $record['line'] = $record['context']['line']; return $record; }); function debug($message, $depth=''){ global $log; $backtrace = debug_backtrace(); $key = isset($backtrace[$depth]) ? $depth : 0; $file = $backtrace[$key]['file']; $line = $backtrace[$key]['line']; $context = array('file' => $file, 'line' => $line); $log->addInfo($message, $context); } debug('debug message!!');
<?php
ini_set( 'display_errors', 1 );

require('./vendor/autoload.php');

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;

$logging_path = 'log/error.log';
$log = new Logger('test');

$output = "[%datetime%] %level_name% %message% %file% %line%\n";

$formatter = new LineFormatter($output);
$stream = new StreamHandler($logging_path, Logger::DEBUG);
$stream->setFormatter($formatter);
$log->pushHandler($stream);

$log->pushProcessor(function ($record) {
    $record['file'] = $record['context']['file'];
    $record['line'] = $record['context']['line'];
    return $record;
});

function debug($message, $depth=''){
    global $log;
    $backtrace = debug_backtrace();
    $key = isset($backtrace[$depth]) ? $depth : 0;
    $file = $backtrace[$key]['file'];
    $line = $backtrace[$key]['line'];
    $context = array('file' => $file, 'line' => $line);
    $log->addInfo($message, $context);
}

debug('debug message!!');

尚、ファイルのパーミッションやユーザーは適宜変更する(rootでインストールしたらvendor/autoload.phpが読み込めなかった)。

 

Twig

インストール方法

同ディレクトリで以下コマンドでインストールする。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php composer.phar require twig/twig:1.*
php composer.phar require twig/twig:1.*
php composer.phar require twig/twig:1.*

*のワイルドカードは1.*系で最新のものをインストールしてくれるらしい。/var/www/html/vendor/twigディレクトリにインストールされる。

使用方法

以下のような形で使用する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
require_once './vendor/autoload.php';
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
echo $twig->render('Hello {{ name }}!', array('name' => 'hoge'));
<?php require_once './vendor/autoload.php'; $loader = new Twig_Loader_String(); $twig = new Twig_Environment($loader); echo $twig->render('Hello {{ name }}!', array('name' => 'hoge'));
<?php
require_once './vendor/autoload.php';

$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);

echo $twig->render('Hello {{ name }}!', array('name' => 'hoge'));

こちらもmonologと同様、ファイルのパーミッションとユーザーに注意する。

 

composerとは

PHPのパッケージ管理システムらしい。yumとかだと依存関係によりインストールできないことがあるが、そういった問題が解決できるらしい。まだ試したばかりで実感できないが本当に解決できるのであれば非常にありがたい。

 

参考サイト

https://qiita.com/tomk79/items/5ab61b4b24fb80fe8a90

http://kzhishu.hatenablog.jp/entry/2015/10/04/200000

 - PHP

  関連記事

LINEのURLプレビューを表示させないようPHP側で制御する方法

公開中の特定のページのみLINEのURLプレビューを表示させないよう制御したいと ...

PHPにて「Fatal error: Uncaught Exception ~~」エラーの対応方法

PHPにてDatetimeクラスの呼び出し時にタイムスタンプを指定しようとすると ...

smart_resize_imageで縦横の比率関係なく、固定リサイズ

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...

PHPでファイルアップロード時にディレクトリトラバーサル攻撃の対策をする方法

あるシステムのセキュリティ対策としてディレクトリトラバーサル(Directory ...

PHPのLocationにGETパラメータとして変数を入れる方法

PHPでページ遷移したい際に以下のように記述すると思う。 header("Loc ...

S