PHP

画面にエラーが表示され無いように 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 の導入もやってみた。

PHP5 への移行支援サービス

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

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

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

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

PHP 4.4 用 Mojavi 2

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

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

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

PHP 4.4 にバージョンアップしてみたら

PHP 4.4 にバージョンアップしてみたら、XOOPSやら Mojavi(Version 2のほう)で沢山 Notice 出てるがな。

Mojavi 2 提案したの私やし、ちゃんと考えなあかんのかも。

めんどくせー

いつも世話になっている友人の為に、2年ほど前に作った PHPを新サーバにインストール。友達なので、当然無償である。

元々は、Apache モジュール版 PHP用に書いていたものだが、今回のサーバはレンタルサーバで CGI版 PHPしか使えない。

もうちょっときちんとプログラム作ればよかった。パスの変更も面倒だ。

PHPも10年か。。

10 years since PHP 1.0 was released! てなことが http://www.php.net/ に書かれてあった。(6月8日だから結構前だな。)

PHP 1.0 がリリースされたころは、全然興味持っていなかった(というより存在すら知らなかった)。多分 Perl を覚えたての頃だろうと思う。オライリーかなんかの 「sed & awk」という本をよく読んでいて、Perl なんか要らないと言っていたのに、いつの間にか Perl 使いになっていた。きっかけは 全然覚えていない。

PHP が 3になったぐらいで使い始めた。いくつかの業務をこなしたけど、なんかしっくり来なくて(統一感が無いのよね)結局 Perl に戻ったりしていた。

もう2度と仕事でPHPなんかやらんとこうとか思っていたのに、いつの間にか就職して PHPを使う部署に居てる。

phpも5とか 5.1 が出て来ているし、多分しばらくはPHP続けるんだろう。

Apache1.3 と php4.3.11 環境を構築

いつも土日は時間が足りない。本当はこの土日にやるべき事が山積みだったのだが。時間の使い方が悪くなって来ているように思う。サスペンスドラマなんか見るんじゃなかった。。。

先日 PHP5 環境を構築した関係で、PHP4 用に書かれたいくつかのプロダクトが試せない状態である。 XOOPS(あえてリンク先は日本版サイト)も PHP5に対応したと聞いているが、ほとんどのモジュールが PHP4 用に書かれているし、 oSCommerceZen Cart なんかも PHP 4 用のプロダクトである。PHP 5で本当に動かないのかどうか試した事は無いが、多分動かないだろう。

ということで、PHP4 環境も作る事にした。但し、Apache と PHP は ports で既に別のバージョン(Apache 2.0.54, PHP 5.0.4)をインストールしている為、ports は使えない(はずである)。なので、ports を使わずにインストールした。

また、インストール済みの Apache がポート番号 80 を使用しているので、別のポート番号(11080)を指定する必要がある。

まあ、そんなこんなでこの土日に出来た事は、Apache1.3, PHP4 のインストールと XOOPS日本版のインストールだけであった。

(注意: 以下、普通にインストール手順しか書いていない。面白い話を期待している人は読まないように)

プログラミング言語の基本は。。。

日経BP社 の IT Pro というサイトで面白そうな記事を見つけた。 そろそろ寝ようと思っていたのだが、今月はじめてのエントリを作成する事にした。

30年たっても基本は C言語(IT Pro)
http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20050531/161850/

ある雑誌でプログラミングに関する記事の編集や執筆をされているようで、C言語の連載記事をかかれているらしい。

そこでつくづく思うのは,OSがCで書かれている限りプログラミングの根本もCなのだということである。

なんとなく言いたい事もわかるが、やや無理矢理な感じもする。 但し、私も Cが根本にあるのは同意する。というのも。。