プログラミング言語

画面にエラーが表示され無いように display_errors を設定する

PHPでのアプリの開発って、このところずっとフレームワークを使ってたので忘れてしまってた。XOOPSも、Drupalも管理画面で変更できるし。Mojavi も cakephp も設定ファイルで変更できる。

しっかり本番環境で、Warning Illegal offset type in xxxx などとエラーメッセージが表示されてしまっていた。
関係者の皆様申し訳ございません。確認不足でした。

本番環境では PHPの設定(php.ini等)で、display_errorsOff にしたほうがよい。こうすることで、エラーメッセージを画面に表示しなくなる。画面にエラーメッセージが表示されると、エラーメッセージからセキュリティホールを見つけられる危険があるから。ついでに、画面に表示せずにログファイルに出力するには、log_errorsOnにしておく。これは、対で覚えておいた方がよい。

今回の場合は、たまたま問題の起こりそうに無いメッセージだったが、お客様からご指摘頂くような失態。

suPHPの罠(php.ini が反映されない場合の対処方法)

某 EC-CUBEのサイトを新しいサーバにお引越し。そのサーバは suExec の PHP版みたいなモジュール suPHP を使っている。

suPHPといえば、例えば、スクリプトファイルの所有者、所有グループが実行ユーザと異なっていたらエラーになるとか、まあとにかく安全に動作するようにちゃんと動いてくれる。別に初めて使うわけじゃないんで、その事はわかっていたつもりだったんだけど……。

EC-CUBEは、日本の企業が作ったソフトウェアなので、モバイル版だとちゃんと日本の携帯電話にあった HTMLを出力してくれる。古い機種のことも考えていて、Shift_JISでの出力に対応している。

ログイン画面で「システムエラー」になったとき、エラーログを見ればすぐにわかった。データベースのエンコードがおかしいってメッセージが出ているが、データベースはちゃんと utf8で作られている。
そうなると、mb_string 関連の設定がおかしいのだろう。たしかに .htaccess ファイルが存在し、mbstring 関連の設定もされている。しかし、このファイルを色々といじってみても、phpinfo()で調べると、値がやっぱりおかしい。

EC-CUBEコミュニティのフォーラムにも似たようなことが書いてあったし、suPHPのFAQにもちゃんと書いてある(Can I use the php_value directives in .htaccess files with suPHP? のところ)。どうやら、suPHPだと .htaccess ファイルの php_value を読み込まない様子。

Solaris 10 x86 で PHPを使う

懐かしい人と電話。弟がお世話になっているそうで、よろしくお願いいたします。

さて、今週は久しぶりに Solaris で色々やってる。

Apache を使えるようにしたり、近くのパソコン工房で、グラフィックボードを買ったり。

で、PHP5.2 の導入もやってみた。

関西オープンソース2007

にいってきた。 関西.pm のメンバーがお昼に行くときの交代要員として。ただし、俺の中では Perl 5.004 からとまっているので、声かけられたらどないしよってずっと思ってた(5.6とか5.8もそれなりには使っているけど)。もうちょっと Perl の勉強しておけばよかった。結局 Perl に関する質問は一度もされなかったけど。 Perl のブースには、干支が同じ(ひとまわり違い)の人がいた。話をすると結構刺激を受ける。俺も頑張ろう。そういや、今年はほとんどプログラムを書いていないなあ

PHP5 への移行支援サービス

m-takagiの日記 さんに、私どものサービス(PHP5 への移行サービス)をご紹介いただきました。ありがとうございます。 :-)

# ぐぐってたらたまたま見つけました。クロールが早くてうらやましいです。

さて、m-takagi さんのエントリにもあるように、けっこう稼げそうなネタで、実際に必要とされているかたもいらっしゃるようです(だからサービスとしてはじめたんですが)。

しかし、この手のサービスをあまり見かけないのは、価格設定が難しいからだと思います。実際に私も悩みましたし。その結果、調査と修正とを別々に対応するということにしました。へたれな私には一律○○円というのは無理でした。

関西.pm 新年会

[関西.pm 新年会のお鍋]Scrapcode@はてなダイアリーでも紹介されているように、13日の土曜日は、関西.pm の新年会だった。2次会からの参加だったが、鍋(ピントがぼけてしまったが写真は材料)をつつきながら Perl について語り合ったり、おしゃれなカフェで 関西.pm の今後について語り合ったりした。

PDFJ などで有名な中島さんも来られていたので、某業務で保留になっている PDFJ の unicode 対応について確認する。きちんと対応しているらしい。やはり僕の作ったアプリの作りかたが悪かったのだろうか。見えないのはクライアントアプリが原因では無いだろうかとの事であった。明日あたりちょっと調べてみようと思う。

Class::Accessor で setter, getter を自動生成

しばらく Perl を使っていなかった(ちょこっとしたツールを作るぐらい)のだが、ある目的のために Perl を勉強し直す事にした。これから数日は Perl ネタが続くおそれがある ;-)

で、昨晩に色々と見ていてたどり着いたのが、Perl の Class::Accessor モジュールである。これは、オブジェクトの属性を設定したり(setter) 取り出したり(getter)する Accessor をいちいち作らなくても済むようにできる。

C MAGAZINEが休刊になるらしい

健康なエンジニアのブログ: さらば「C MAGAZINE」!?によると、

「C MAGAZINE」が '06/3月発売号で休刊になるようです。

とのこと。

私もしばらくは読んでいなかったのですが、ここ3年ぐらいは毎月買っていました。Webも良いけど、電車の中とかで読めるこういう雑誌は無くならないで欲しかったんですが。これ以外に毎月買おうかと思うような雑誌は無いし、非常に残念です。

確かに、CやC++の仕事は減っていますし、この雑誌も C#やJavaの事を書くようになっていることから、C言語の雑誌というのはもう売れなくなっているんでしょうね。

Solaris 10 に Python をインストールしてみる

Zope 2.8.4 をインストールするまえに、Python 2.3.5 をインストール。

GNU tar (/usr/sfw/bin/gtar) を使ってアーカイブを展開し、./configure && gmake 。。。。。。だとうまくいかない。

PHP 4.4 用 Mojavi 2

PHP 4.4.0 にバージョンアップしたら、Mojavi 2 が動かなくなったと言う話があったが、Mojavi Forum に解決策(パッチ)が掲載されていた。

ちょっと量が多いので全部は追いきれていないのだが、きちんと直っているようだ。

参照は小粒でもぴりりと辛い。