dyld: Library not loaded: /usr/lib/libpq.5.dylib

2012/08/17 | Mac関連

MacOSでPHPスクリプトを動作させようとプロンプトから実行したのだがこんなエラーが出てしまう。

dyld: Library not loaded: /usr/lib/libpq.5.dylib

たしか前は使えていたようなきがするのだが・・・。確認してみると確かに上記のファイルがない。代わりに以下のファイルがあった。

/usr/lib/libpq.5.3.dylib

/usr/lib/libpq.dylib(上記のファイルのシンボリックリンク)

なので/usr/lib/libpq.5.dylibもシンボリックリンクを作ってみたら動作した。

いったいいつからこうなったんだろう。MacOS Lionをインストールしてからかなぁ。Mountain Lionもインストールしようかと思うけれど、もう少し様子見かな。

crontabの影響でmaillogにエラー

2012/08/15 | VPS, メール

新しくセットアップしたKagoya Cloud/VPSをセットアップしている。このサーバは基本的に外部にサービスの提供をするためのサーバではなく、バックアップや情報収集用として使用するためのサーバだ。バックアップファイルをさらにバックアップするためのサーバでもある。

このサーバで稼働させるサービス(自分用)の第一弾として、各サーバのポートの稼働状況をチェックするプログラムを仕込んだ。各サーバにはそれぞれ自分がオープンしているポートを知らせるプログラムを仕込んである。10分おきにプログラムを起動し、各サーバのヘルスチェックをして、以上を検知した場合にメールで通知するという仕組み。

最初は機嫌よく動作していると思っていたのだが、ふとmaillogを見るとエラーが出ている。

Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: the Postfix sendmail command has set-uid root file permissions
Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: or the command is run from a set-uid root process
Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: the Postfix sendmail command must be installed without set-uid root file permissions

んー、見慣れないエラーだ。ということで調べてみた。どうもCentOS6で生じて、cronを使うことによって発せられるらしい。そしてcronをチェックしたら、コマンドの最期に「> /dev/null 2>&1」をつけるのを忘れていた。cronからログをメールを送信する時にエラーが生じるようだ。ということで、上記をコマンドに付け足し、エラーが出なくなったことを確認した。

openVZの/proc/user_beancounters

2012/08/14 | VPS

今回また新しくVPSを借りた。ずっと避けてきたのだが、今回openVZなVPSであるKagoya Cloud/VPSを借りてみた。

openVZには痛い記憶がある。DTIのServersMan VPSを借りた時だ。さすがに一番下のプランでは心もとないと思ったので、一つ上のスタンダードプランを借りた。今でこそ最大メモリ2GBとなっているが当時は1GBだった記憶がある。運用中度々遅くなるので問い合わせたら、/proc/user_beancountersでエラーが出ているからリソースの使いすぎだと言われたような記憶がある。単なるApache、PHP、MySQLなウェブサーバなのにそれはないだろうと思って解約したのだ。

で、今回Kagoyaを借りたのだが、不安もあったので調べてみた・・・。一つもエラーはカウントされていなかった。っていうか、当たり前だよね。大したことしていないのにエラーが出たなんて目も当てられない。もちろんメモリやコア数、ディスク容量は圧倒的にKagoyaのほうが多いのだが、金額はKagoyaのほうが安い。もう、DTIはありえないでしょ。

とりあえず様子を見つつ、Kagoyaを使って見ることにする。時々/proc/user_beancountersを調べつつ。

 

.forwardでパイプしたプログラムでメール本体を取得するには

2012/08/13 | メール

.forwardでメール受信をトリガーとしてphpを起動することはできたが、どうやってメール本文をphpで取得するんだっけ。過去に何度もやっているのに、こういう大切なことをメモしていないなんて、テクメモの意味が無い。

$fp = fopen( ‘php://stdin’, ‘r’ );

これでファイルポインタをオープンし、あとは通常のファイルと同様に読みこめばOK。これでヘッダから本文までメールの全てを受信することができる。あとはメールをデコードするライブラリにでも突っ込んで処理すれば楽ちん。

単にメール本文を取得するだけなら、上記で取得したテキストの改行が連続する部分(最初の)で二つに切り分けて、後部を取ればいい。送り先、送信元のメールアドレスを取得したいなら$_SERVERから値を取得できる。単純処理ならライブラリ不要だ。

他にも簡単に値を取得する方法があったような気がするけれど・・・思い出せない。

.forwardのパーミッション

2012/08/12 | メール

.forwardでメールの受信をトリガーとしてphpにパイプする際、どうしてもパイプできなかった。プログラムが間違っているのかと思って「php -l」してみたけどエラーはないとでる。何故だろう。

.forwardのパーミッションを調べたら644になっていたのだが、これを600に変更したら動作してくれた。わかっていたつもりでも忘れていることは多々あるようだ。

ただ、いろいろ触った結果動作したので他に原因があったのかもしれないけれど。

 


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net