連日暑い日が続いており、節電の必要性も迫られる中、皆様体調を崩しておられないでしょうか?
さて、誠に勝手ながら、下記の期間を弊社の夏期休業とさせて頂きます。
2011/8/12(金)~8/16(火)
ご迷惑をおかけしますが、ご了承賜りますようお願い申しあげます。
CentOS 5.4以降では、IPv6無効化の方法が変わっていたので、忘れないように
書いておく。
# echo 'options ipv6 disable=1' > /etc/modprobe.d/disable-ipv6.conf
上記の設定を行った後、再起動すると適用される。
/etc/modprobe.conf や /etc/sysconfig/network で頑張っても無視されるので、
要注意!
perlでDBIを使った処理でforkさせた際に、ちょっとはまったので、忘れないように書いておく。
親プロセスで、DB接続後にforkする場合、子プロセスにデーターベースハンドルが引き継がれて
しまい、困った事象(親のDB接続が切れる)が発生する。
これを回避するには、親プロセスのDB接続時に「AutoInactiveDestroy => 1」を設定すると、
幸せになれる。
○ソース例
|
ただし、"AutoInactiveDestroy"が使えるのは、DBIのバージョンが1.6.14以降の場合のみ。
それ以前の場合は、子プロセススタート時に、「$conn->{InactiveDestroy} = 1」とするとよい。
ちなみに、perlモジュールのバージョン確認は、Module::Infoをインストールしておくと、
簡単に確認できる。
|
#サンプル出力のバージョンが残念なバージョンでした...
php 5.3には色々な変更点があるが、Smartyも3系で大きな変更が行われており、
既存システムやサイトを動かそうとすると、はまりどころが多いようです。
現時点で、はまった点を忘れないように書いておきます。
・phpのエラーレポートレベルが変更されている
E_DEPRECATED が追加されていて、将来使えなくなるコードがエラーとして表示される。(標準状態)
ソースを変更しないといけないことには、変わりがないが、取り急ぎ稼働させたい場合は、
レポートレベルを変更して、エラーが出ないようにすることは可能。
error_reporting = E_ALL & ~E_NOTICE
↓
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
・Smarty 3.0.7からpopup系のプラグインが削除されている
吹き出しみたいな感じで使えたpopupプラグインが削除されている。
継続して使いたい場合は、テンプレートに自分で記載するか、自前プラグインを作る必要有り。
(まあ、新しいサイトの場合は、使わないと思うので、大した問題ではないと思う)
・Smartyの"html_options"等のソースが変
html_options等を利用しているテンプレートで、2回目以降の表示の際に、
Call to undefined function smarty_function_escape_special_chars() in /usr/lib64/Smarty/plugins/function.html_options.php
などのエラーが表示されて、異常終了するケースが発生した。
該当のfunctionは、function.html_options.phpの33行目あたりで、require_onceでロードされているが、
キャッシュされた2回目以降の実行でうまくロード出来ない模様。
この問題は根が深そうな感じだが、取り急ぎ動作させるには、require_once → requireにすれば、
動作可能になる。
根本的な原因調査は、継続中。(Smarty本体の可能性が高いと感じている)
phpのincludeとinclude_once及びrequireとrequire_onceは、使いどころをよく考える必要有り。
mod_nssがインストールされた環境で、CentOSを5.6にアップデートして、httpdを再起動すると、
サイトにアクセス出来ない問題が発生したため、忘れないように記載しておく。
○エラー内容
error.logに下記のようなエラーが出力され、Apacheがまともに起動しない。
[error] NSS_Initialize failed. Certificate database: /etc/httpd/alias.
○原因
CentOS 5.6でアップデートされた「mod_nss-1.0.8-3.el5」が原因。
/etc/httpd/alias/ 配下のdbファイルのパーミッションが変更され、rootのみ読み書き可に
なってしまっており、Apacheの実行アカウントでアクセスできないため、エラーとなる。
アップデート後の/etc/httpd/alias/
drwxr-xr-x 2 root root 4096 4月 11 10:46 . drwxr-xr-x 5 root root 4096 4月 11 10:43 .. -rw-r----- 1 root apache 65536 7月 10 2008 cert8.db -rw------- 1 root root 4395 7月 10 2008 install.log -rw-r----- 1 root apache 16384 7月 10 2008 key3.db lrwxrwxrwx 1 root root 31 4月 11 10:46 libnssckbi.so -> ../../..//usr/lib/libnssckbi.so -rw-r----- 1 root apache 16384 7月 10 2008 secmod.db |
○対策
/etc/httpd/alias配下のdbファイルのパーミッションを変更し、Apacheの実行アカウントで
アクセス出来る状態にして、httpdを再起動する。
(dbファイルのグループをapacheにして、グループへ読込権限を与える)
対策後の/etc/httpd/alias/
drwxr-xr-x 2 root root 4096 4月 11 10:46 . drwxr-xr-x 5 root root 4096 4月 11 10:43 .. -rw-r----- 1 root apache 65536 7月 10 2008 cert8.db -rw------- 1 root root 4395 7月 10 2008 install.log -rw-r----- 1 root apache 16384 7月 10 2008 key3.db lrwxrwxrwx 1 root root 31 4月 11 10:46 libnssckbi.so -> ../../..//usr/lib/libnssckbi.so -rw-r----- 1 root apache 16384 7月 10 2008 secmod.db |
ちなみに、mod_nssをインストールしていない環境は、もちろん影響なし。
こんなアップデートパッケージのエラーは勘弁して欲しい...
最近のコメント