質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

4回答

1792閲覧

自作PHPのログ出力先はどこのフォルダがいいでしょうか?

teracat

総合スコア44

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/10/25 04:09

自作PHPのログ出力先はどこのフォルダがいいでしょうか?
既存のアプリであれば/var/logですが、自作アプリもそこへ出力するべきか
それとも他に出力したほうがいいのか悩んでいます。
アドバイスよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

運用状況によりますが

/usr/local/var/log

とか

/usr/local/php/var/log

的なディレクトリでもよいかと。
ただし、アクセスログはhttp側に任せるべきなので、どういった実行結果やエラーを
どういったログに残したいかによります。
またCLIでのログは極力loggerで制御して下さい

投稿2017/10/25 04:38

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2017/10/25 05:03

> アクセスログはhttp側に任せるべき あれ、そうなんですか? アクセス数が多いとログが埋もれる可能性があるので、 静的ファイルの多いサーバでは使い分ける運用も考えられそうですが…
yambejp

2017/10/25 05:18

それもふくめてカスタムログをとるんですよね? それはhttpdが提供します。 phpが独自にログを吐く必要は特殊な場合に限られると思います
miyabi-sun

2017/10/25 06:16

不勉強で申し訳ないです。 PHPマニュアル等を見てもログの扱いまわりのベストプラクティスがわからなかったので、 ソース記事やURLがあるのかなと思った次第です。 例えばビルトインウェブサーバーに関しては公式マニュアルで明確に「本番環境では絶対に使うな」と書いてあります。 http://php.net/manual/ja/features.commandline.webserver.php Right Way等を見てもログはこうしろとは書かれていませんでしたし、 PHPとApacheをインストールしたら勝手にApache越しに書き込むような設定になるので、 やんわりと推奨しているのかな?くらいにしかわかってませんでした。
yambejp

2017/10/25 06:38

そもそも、質問者のteracatさんのいう「自作PHPのログ」と、 わたしがいう一般的なアクセスログが別のものを指しているかもしれないのでなんともいえませんが わたしはあくまで「アクセスログ」についてはhttpdに任せるべきといっているだけです。 miyabi-sunさんの考えるログはさらにまた違うものかもしれませんね WEBの場合、vhost単位や場合によってはディレクトリ単位で別のログをとります ただ取れる情報は結局上位のhttpdが把握できるもの以上ではないので 結局はhttpdがカスタムにとるログが必要十分な条件を満たすものになります <VirtualHost *:80> ServerAdmin hogehoge@exsample.com DocumentRoot /usr/local/mywww/tokusetsusite/data-dist ErrorLog /usr/local/mywww/tokusetsusite/logs/error_log CustomLog /usr/local/mywww/tokusetsusite/logs/access_log combined ServerName tokusetsusite.example.jp </VirtualHost> のようなログをとっておくことが肝要で、こうしておけば各種 ログ解析ツールをつかって状況を可視的に判断できます それとは別にphpをCLIに使用して、標準エラー出力をログとしてとっておきたいとか 定期処理をcronで実行しログをとっておきたいとか、そういうのは必要に応じて 工夫すればいいかと。
miyabi-sun

2017/10/25 08:08

私の方でもあれこれ調べました。 PHPは基本的にログに関してはノータッチで、呼び出すApacheの好きにしろって感じのスタンスのようだと解釈しました。 そうなるとyambejpさんの「httpdに任せるべき」という解答そのものですね。 納得いきました。ありがとうございました。
otn

2017/10/25 15:07

/usr は、日常的に更新しないファイルを格納する場所なので、ログには不適です。
guest

0

PHPは特に指定しない場合は標準出力にログを吐き出すようです。
Apache越しにPHPを起動した場合は/var/logsの配下に吐き出すようです。

どこに出力するべきか?
色々調べましたが、PHPの公式サイト、PHPRightWay、Qiitaなどと調べましたが○○に出力すべきというベストプラクティス的な情報は得られませんでした。
というわけで、Linux自身のディレクトリ構成の規格に沿うことにします。


@ITというサイトで各ファイルはどこに格納されているべきかという紹介をしてくれています
こちらの記事から抜粋していきます。

ディレクトリ/ファイル構成の標準規格FHS

さまざまなシステムで似たり寄ったりの構成になっていますが、やはり細かい違いはあります。

これを統一すべく策定されたのがFilesystem Hierarchy Standard(FHS)で、
2001年8月時点ではバージョン2.2がリリースされています(http://www.pathname.com/fhs/)。

/var

プリントやメール、ネットニュースのスプール、キャッシュといった作業用エリア、ログファイルなど、

変化していく(variable)ファイルを配置するディレクトリです。
/tmpと違って、リブートしても削除されません。

/var/log

各種プログラムの動作記録を収めているのが/var/logです。

例えば、ブート時のメッセージを収めたboot.logを見ることで、起動時に特定のハードウェアを認識しているかどうかを確認したりします。

どうやらUnix / Linux系OSはFHSという
こういうディレクトリを用意しているので、その配下にファイルを格納してくださいねー
…という勧告を行っているようです。

素直にFHSに従い、/var/logの配下に出すようにするのが普通でしょうね。
ただし、そこから先は@ITさんの記事だけではよくわからないですね。


実際にFHSを見に行くと書いてありました。

/var/log : Log files and directories

Purpose

This directory contains miscellaneous log files.

Most logs must be written to this directory or an appropriate subdirectory.

ログファイルは/var/logの直下か、適切にサブディレクトリを切ってその配下に出力しなさいと書いてあります。


自作PHPのログ出力先はどこのフォルダがいいでしょうか?

一般的には「/var/logs」の配下に新しいプロジェクト名のディレクトリを切って、そこで運用するのが自然でしょう。

運用ルール的な説明をしておくと、
FHSはLinuxディストリビューションの開発者に対してかなりの強制力を持ちますが、
利用者レベルではそこまで厳格に受け止める必要はなさそうです。

現にApacheはFHSの現行3.0や2.3では宣言されていない/var直下にwwwというディレクトリを作ってそこに静的ファイルを格納して動作する仕組みになっています。
(FHSに厳密に従うのであれば、/opt配下にディレクトリを作成するのが自然でしょう。ただしApacheが出来た当時はFHSのバージョンも古くて、例えば/opt等のディレクトリが宣言されてなかったとか?この辺はよく分かってませんが…)

実際にログを吐き出す際、
例えばアクセスが激しいサーバの場合ログが大量になることが想定されるので、
外付けHDDをマウントして、/mnt/hoge/huga/logs等のパスに対してログを出力するような運用が考えられます。
ただし、FHSを知っているエンジニアは真っ先に/var/logsの配下を覗くと思いますので、
そこにログファイルを吐き出さない場合は予め周知しておく必要があるでしょう。

投稿2017/10/25 07:36

編集2017/10/25 08:05
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

CentOS(Redhat)ならば

/var/log/phplog

または一階層だけ下に掘って

/var/log/php/phplog

が、一般的かと思います(私の好みは後者です)

ただ、これはユーザの利用方法にもよりますが
あえてWEBサイトを管理しているOwnerのホームディレクトリ配下に出力する人もいます。

例)
■ホームディレクトリ
/home/hoge
■ログディレクトリ
/home/hoge/logs
■ドキュメントルート
/home/hoge/website

このメリットは、chroot制限のかかっているサーバ環境において、FTPで直接ログを取得できることです。
逆にデメリットとしては、ログの保管先がバラバラになることで管理が大変になることです。

保存先については色々と意見があるかと思いますので、参考までに・・・。
※特殊なディレクトリを指定してかつ「logrotate」を忘れると大変なことになるのでご注意ください

投稿2017/10/25 05:56

編集2017/10/25 05:57
k-nishiyama

総合スコア240

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人的意見ですが

/var/log

の下にサブディレクトリを作成するのが一般的かと思います。

あるいは

/tmp

の下にという手もあるかと思いますが。

投稿2017/10/25 04:14

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問