明滅するプログラマの思索

WEBエンジニアとして勤務している一介の男が、日々気づいたことをまとめるブログです

Console CommandLine を使って汎用的なコマンドを作る

PHPPEAR にはConsole_CommandLineというライブラリが公開されています。
Console_CommandLinePHPコマンドライン型のアプリケーションを作成するためのライブラリで、引数やオプションを手軽に利用したり、出力時の強調機能、ヘルプ出力機能などを含んでいます。
今回は、Console_CommandLineを利用して、引数により処理を切り替えられる汎用的なコマンドの実装を行ってみます。

目標としては、以下のような状況を考えます。

  • コマンド用スクリプトを用意し、1つ目の引数に実際に行いたい処理を指定します。
  • 実際の処理は、引数ごとに用意された別々のスクリプトが受け持ちます。
  • 2つ目以降の引数・オプションは、対応する処理スクリプトで任意に指定できるようにします。

コマンド用スクリプト php_command.php を用意します。
引数には実際に実行する処理を指定します。
以下のような感じです。

php php_command.php insert_table "Hello" -m test

ここで、実際に実行する処理 insert_table は別スクリプト command_insert_table.php が担当することにします。

導入環境

ソフトウェア バージョン
PHP 5.6

PEAR のライブラリ Console_CommandLine を利用します。

続きを読む

IP制限をかけた VirtualHost に Let's Encrypt の SSL証明書を設定する

Let's Encrypt の SSL証明書を使用するには、サーバ側の DocumentRoot に Let's Encrypt のサーバからのリクエストを許可する必要があります。
Let's Encrypt が証明書を発行する処理の中で、DocumentRoot 直下に.well-knownというディレクトリが作られ、リモートでアクセスすることで対象ドメインが実行サーバに向いていることを確認するのです。

このときIP制限その他のアクセス制限をかけている場合、Let's Encrypt のサーバのアクセスも遮断してしまうため、証明書の発行(自動更新も)が失敗してしまいます。
今回は、この回避方法について記述します。
といっても、難しいことはありません。

続きを読む

コマンドラインでPHPを実行した際の error_log() の挙動

PHPにはerror_log()という関数があります。
error_log() は、エラー時のメッセージを明示的に出力するための関数です。

error_log("エラーが発生しました");

上記のように使用します。
error_log() コール時、WEBサーバ経由でPHPを実行していれば、WEBサーバに設定したエラーログファイルに追記されます。
では、コマンドラインからPHPを実行した場合、error_log() はどこにエラーメッセージを出力するでしょうか。

続きを読む

logwatch のファイル出力が実行されない場合の対処

CentOS7 で logwatch を使用し、結果をファイルに出力する場合、手動では以下のコマンドを実行することになります。

logwatch --output file --filename <file name>

CentOS6 までは以下の書き方でした。

logwatch --save <file name>

正直、CentOS6 までのコマンドのほうが簡潔で好きですが、
--output stdout(標準出力)に対応するため、仕方のない変更だったのでしょう。
なお、ファイル出力を crond で実行する場合、
/etc/logwatch/conf/logwatch.confの記述は以下となります。

続きを読む

自作ライブラリをSubversionでバージョン管理し、composer でインストールする

自作のライブラリを composer 経由でインストールできるようにしたい。
ただし社内だけに公開したい。

そういった場合に、VCS(バージョン管理システム)にコミットしたものを composer 経由でインストール(チェックアウト)できます。
今回は、社内で VCS として Subversion を利用している場合の構築についてまとめます。

続きを読む

composer を使おう

composer とは、PHPのライブラリを依存パッケージごと管理するツールです。 これまでにも PHP のライブラリツールとしては PEAR がありましたが、現在では composer でインストール可能なものはこちらで管理する流れが出来上がっています。
今回は今更ですが composer を導入するための手順についてまとめます。

導入環境

ソフトウェア バージョン
CentOS 7.3
PHP 5.6
続きを読む

ストリーミング動画のプレイリストを非同期に切り替える

3つ目の HLS(HTTP Live Streaming)ネタです。
HLSプレイリストをPCで再生する場合、video.js ライブラリを利用すると楽です。

<html>
<head>
<link href="https://vjs.zencdn.net/6.2.7/video-js.css" rel="stylesheet">
<script type="text/javascript" src="./js/jquery-2.1.1.min.js"></script>
</head>
<body>
<div class="movie_content_cap">
  <video id="player" class="video-js vjs-default-skin" height="404" width="720" controls poster="./st_capture.jpg">
  <source id="player_source" src="st.m3u8" type="application/x-mpegURL" />
</video>

<script src="https://vjs.zencdn.net/6.2.7/video.js"></script>
<script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.10.1/videojs-contrib-hls.js"></script>

<script>
$(function() {
  videojs.options.flash.swf = 'https://unpkg.com/videojs-swf@5.4.0/dist/video-js.swf';
  var player = videojs('player');
  $('#player').on('touchstart mousedown', function(e) {
    e.preventDefault();
    player.play();
  });
});
</script>

jQuery を利用しています。

続きを読む