phpで0埋め

str_replace か、sprintf を使用

/* 今月を取得 */
$strMM = date("m");

/* ①str_padで2桁まで0埋め */

$monthID = "eid".str_pad($strMM, 2, "0");

echo $monthID;

06

/* ②sprintfで3桁まで0埋め */

$monthID = "eid".sprintf("%03d", $strMM);

echo $monthID;

006

フランス語で「ネットワーク」は、


un réseau

アン レゾ(「レ」というより「へ」に近い)

と言います。

パソコンのネットワークも、人間のネットワークも両方使えます。

フランスでの仕事で一番驚いたのが、

日本で使用しているコンピュータ用語が

全く通じない・・・ということでした。

例えば、PC用語だけでも、

コンピュータ un ordinateur

スクリーン un écran

キーボード un clavier

マウス une souris

ハードディスク un disque dur

マザーボード la carte mère

USBキー une clé USB

確かにmouse, hard disk, motherboardとか、仏語に直訳だけど・・・

最初 la carte mère を聞いたときは少し笑ってしまいました。

(日本語も直訳になっていたら母板にネズミ・・・?)

こういう言葉って世界共通だと思っていました。

そう言えば、PC用語がフランスに入ってくるとき、

フランス政府が、フランス語を守るために自国語に

変換するような政策をしてたって昔聞きました。

中でもなかなか業者さんとかに通じなくて困ったのが、

ファイヤーウォール firewall(英の直訳は防火壁)

後で un pare-feu というと知ったけど、なかなかこれが

覚えられませんでした。

最近はfirewallでも通じるみたいです。

OS (オペレーションシステム)も、意外と通じず、

SE (le système d'exploitation)

と言わないと、分かってもらえない人も結構沢山いました。

(今はどうなんだろう?)

ただ、フランスの若いSEさん達は結構英語を話すし、話したがります。

でもちょっとフランス語でもPC用語も覚えておくと、お店(フナック)

とか行ったときに便利だと思いますよ。

久しぶりにLinuxを使用し、かなり設定に時間がかかってしまったので、自分へのメモ書きです。

サーバにapacheとphpがインストールされていて、Oracle接続を設定する場合。
ODBCを使用しないで、OCIを使用しました。
appサーバはLinux、DBサーバもLinuxです。


①Instant Clientのダウンロード

ORACLEのページからダウンロードできます。※フリーですが、登録が必要。

http://www.oracle.com/technetwork/jp/topics/index-099943-ja.html

導入するマシンはLinux ubuntu 64bitでしたので、
Instant Client for Linux AMD64 Version 10.1.0.5をダウンロード

● BASIC
instantclient-basic-linuxAMD64-10.1.0.5.0-20060519.zip

● SDK
instantclient-sdk-linuxAMD64-10.1.0.5.0-20060519.zip

● SQL*Plus
instantclient-sqlplus-linuxAMD64-10.1.0.5.0-20060519.zip

必須なのはBASICとSDK、一応接続確認にSQL*Plusも入れておきました。


②Instant Clientの展開

/opt/oracle の下に、Instant Clientを展開します。

cd /opt/oracle/
unzip instantclient-basic-linuxAMD64-10.1.0.5.0-20060519.zip
unzip instantclient-sdk-linuxAMD64-10.1.0.5.0-20060519.zip
unzip instantclient-sqlplus-linuxAMD64-10.1.0.5.0-20060519.zip


instantclient10_1というファイルが出来てその中にファイルが展開されます。
一応フォルダ名をinstantclientにしておく

cp instantclient10_1 instantclient
rm instantclient10_1



③シンボリックリンクを作成

cd instantclient
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so



④ライブラリパスの設定

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient
export PATH=$PATH:/opt/oracle/instantclient


SQL*Plus接続用にbashに設定しておく

vi ~/.bashrc
export LANG=ja_JP.utf8
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient
export PATH==$PATH:/opt/oracle/instantclient



⑤ここまでの設定で、SQL*Plusからは接続できるので、接続確認

sqlplus USER/PASS@HOST_NAME:PORT/SERVICE_NAME

ここで接続できなかったら、パスが設定されていないとか、
そもそもインストールしたinstantclientのヴァージョンが違うとか・・・
この後もう1台(red hat系)にも環境を作ったけれど、32bitだったのに
64をインストールしていて、sqlplus コマンドで(バイナリファイルは
オープンできません)みたいなエラーが出ました。

時間がかかってしまったのはこの後の処理。

※ここで、通常なら./configureをoci8のエクステンションを付けて実行するのだけど、
インストールした環境に元々phpとapacheが入っていて、configureが実行できなかった
ので、一度oci8をインストールしてphpizeしてconfigureを作成しました。
(こういうやり方でいいのか分からないけど・・・)


⑥OCI8をインストール

pecl install oci8

何故かこれで失敗するので、手動でインストールすることに・・・

http://pecl.php.net/package/oci8

ここからoci8-1.4.6.tgzをダウンロードして解凍

cd /usr/local/src
tar zxvf oci8-1.4.6.tgz
cd oci8-1.4.6


ここでphpizeを実行。

phpize

実行が最後まで行くと、ようやくその下にconfigureが出来ていました。


⑦./configureを実行

./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient

続いてインストール

make
make install



⑧oci8.soライブラリを確認

oci8.soができているので、

find / -name "oci8.so"

とかで確認してみます。


⑨php.iniファイルにoci8の設定

vi /etc/php/apache/php.ini
extension_dir=/usr/local/src/...
extension=oci8.so


ちなみに一応ライブラリ自体は動かさず、extension_dirを設定しました。
(ライブラリは同じところにまとめた方がいいかも知れないけど・・・)


⑩apache起動ファイル又は環境設定ファイルへライブラリパスとNLSを設定

cd /usr/local/apache/bin

起動ファイルの場合はこっち

vi apachctl

環境設定ファイルの場合はこっち

vi envvars

設定する内容は、bashに設定したのと同じ

export LANG=ja_JP.utf8
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient
export PATH==$PATH:/opt/oracle/instantclient


(↑ちなみ最初にNLS_LANGを設定していなかったら、
SQLの実行結果がUTF-8で戻っていなく、マルチバイトが
全部文字化けしてました。)


⑪apacheを再起動

/usr/local/apache/bin/apachctl stop
/usr/local/apache/bin/apachctl start



⑫phpinfoでoci8の項目があるか確認

http://xxx.xxx.xxx.xxx:8080/phpinfo.php

ここでoci8の項目が追加されていれば、phpから認識されているので、
php内でoci8関数を使用できます。


⑬php.iniの詳細設定 oci8とmbstring

oci8は全部コメントアウトを外します。
mbstringはlinux用のphp.ini設定のサイトを参考に
設定しました。


私は⑦がずっと正常終了しなく、最初に戻ってoci8を手動でインストールして
解凍してphpize-->./configure でうまくいきました。

最終的にうまくいかなかったとき、解決のきっかけになったのはこのサイトでした。

http://ubuntuforums.org/archive/index.php/t-92528.html

それと、Linux(ubuntu)はroot権限無かったので、全てsudoで。

フランス語で「偏頭痛がする」は、

J'ai la migraine.

と言います。

単に頭痛がすると言いたいときは、J'ai mal à la tête.で大丈夫です。

ちなみにネットで調べたところによると、
偏頭痛の場合に良くないのは、チョコレートチョコレート、チーズチーズ、赤ワインワイン
だそうです。
フランスに代表される食べ物ばかり・・・

逆に緑茶やコーヒーは痛みを軽減する場合もあるようです。

ちなみに私は今日の午後から偏頭痛が始まり・・・ズキズキ・・・そのまま嘔吐してしまいダウン。
家に帰ってコーラと睡眠で少し回復しました。
(フランス人はしばしば胃が気持ち悪くなるとコーラを飲むように言います。)
胃腸の弱い私にはこのコーラ治療が、意外と効いたりしています。
フランス語で「電球を取り替えてくれる?」は、

Est-ce que tu peux changer une ampoule ?

と言います。

une ampoule は、電球の他に、豆、水ぶくれの意味もあるそうです。

-J'ai des ampoules à la main à cause du travail agricole.
 農作業で手に豆ができた。