9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
CentOS7

Composer で Monolog のインストール

公開日:2019-07-05
更新日:2020-07-21

1. 概要

PHP用ロギングライブラリの Monolog を Composer で インストールします。

Composer でインストールできるライブラリは、https://packagist.org/ で検索できます。

2. インストール

以下を実行します。
cd /var/www/html
mkdir test_app
cd test_app
composer require monolog/monolog
composer を使う場合は、root ユーザ以外で実行することが推奨されています。
composer の使い方に慣れたら、root 以外で実行するようにしてください。

インストールが完了すると、以下のフォルダ構成となります。
/var/www/html/test_app
├─ composer.json
├─ composer.lock
└ vendor
   ├─ composer
   ├─ monolog
   ├─ psr
   └─ autoload.php

Composer でインストールしたパッケージを使う場合、 最初に vendor/autoload.php を読み込みます。
あとは使いたいクラスを use を使って指定するだけです。
autoload.php により自動的に読み込まれるため、require などで読み込む必要はありません。

補足1. パッケージのアップデート
全体
composer update

個別
composer update monolog/monolog

補足2. 他の環境に同じパッケージのインストール
composer.json をコピーして以下を実行すると、composer.json で指定されたパッケージがインストールされます。
composer install

3. テストプログラムの作成と実行

vi test.php
<?php
  require_once 'vendor/autoload.php';

  use Monolog\Logger;
  use Monolog\Handler\StreamHandler;

  $logger = new Logger('test');
  $stream = new StreamHandler('test.log');
  $logger->pushHandler($stream);
  $logger->debug('debug');
?>
OK

http://192.168.233.100/test_app/test.php にアクセスします。
以下のエラーが発生します。
Fatal error: Uncaught UnexpectedValueException: The stream or file "test.log" could not be opened: 
failed to open stream: Permission denied 
in /var/www/html/test_app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107
Stack trace: #0 /var/www/html/test_app/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(39): 
Monolog\Handler\StreamHandler->write(Array) #1 /var/www/html/test_app/vendor/monolog/monolog/src/Monolog/Logger.php(344): 
Monolog\Handler\AbstractProcessingHandler->handle(Array) #2 /var/www/html/test_app/vendor/monolog/monolog/src/Monolog/Logger.php(623):
Monolog\Logger->addRecord(100, 'debug', Array) #3 /var/www/html/test_app/test.php(10):
Monolog\Logger->debug('debug') #4 {main} thrown in /var/www/html/test_app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107

上の階層に戻ってファイル一覧を表示します。
cd /var/www/html
ll

test_app ディレクトリは、
drwxr-xr-x. 3 root root
となっています。
これは、root ユーザはフルアクセス、root グループとその他ユーザーは、書き込み不可を意味します。

PHP を動かす httpd は、apache ユーザで動いています。
そのため、現在の設定では、書き込み不可でエラーとなります。

/var/www/html 配下の所有者を、全て apache ユーザに変更して、フルアクセスできるようにします。
chown -R apache:apache /var/www/html

再度 http://192.168.233.100/test_app/test.php にアクセスします。
まだエラーが出ます。
これは SELinux によるもので、httpd で書き込みできるようにするには、書き込み可能にするラベルを付ける必要があります。

ラベルを付けます。
chcon -R -t httpd_sys_rw_content_t /var/www/html

以下でラベルを確認できます。
ls -alZ /var/www/html

再度 http://192.168.233.100/test_app/test.php にアクセスすると、
test_app 配下に test.log が出力されます。

4. 補足

4.1 書き込み権限の付与

上記ではファイルの所有者を apache ユーザーに変更して書き込めるようにしていますが、 その他ユーザをフルアクセスしたり、root グループに apache ユーザーを追加して root グループをフルアクセスにしても書き込めるようになります。
但し、どちらも apache 以外のユーザーでフルアクセスできてしまうため、セキュリティー的には良くありません。

その他ユーザをフルアクセスにする
chmod -R 757 /var/www/html

r:4:読み込み
w:2:書き込み
x:1:実行

権限(上記の 757 の部分)は、所有者、グループ、その他ユーザーの順で指定します。

root グループに apache ユーザーを追加して、root グループをフルアクセスにする
root グループに apache ユーザーを追加
usermod -aG root apache

root グループをフルアクセスにする
chmod -R 775 /var/www/html

グループの確認
cat /etc/group

root グループから apache ユーザーを削除
gpasswd -d apache root
apache ユーザー が root グループに入っている場合、 その他ユーザーを書き込み可にしても、apache ユーザーでは書き込み不可となります。
また、グループにユーザーの追加・削除を行った場合、念のため再起動してください。

4.2 PHP を動かすユーザーについて

PHP を動かす httpd は、root ではなく、apache ユーザで動いています。
以下でプロセス毎のユーザーを確認できます。
ps -aux | grep apache

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲