Apache起動障害(Unclean shutdown of previous Apache run?)続き

前のエントリでPHPのログの作業を実施したところ、うまく動くようにはなりましたが・・・


もう一度再起動しようとしたら、また起動しなくなりました。


色々やってみたところ、php.ini をちょっと編集して再起動するとうまくいく模様。


よくわからん。。。。。。


1.3系の古いバージョンだから、なにかあるのかもです。


とりあえず、なるべく再起動しないようにしますわ。


根本的な解決方法は時間のある時にでも調べます。


でわ。

OpenLaszloをいぢりたい

掲題の通りです。


OpenLaszloとか何か?
laszlo.jpによれば、

オープンソースソフトウェア(OSS)です。誰でも無料で使うことができます。
OpenLaszloはRIAをブラウザ上で実現します。
OpenLaszloで作成したRIAアプリケーションはFlashかDHTMLとして動作します。(マルチランタイム機能)
開発者はXMLJavaScriptからなる独自のオブジェクト指向言語LZXでコードを記述します。
簡単なFlashムービーはもちろん、DBと連携した業務アプリを作ることができます。
百聞は一見に如かず。OpenLaszloでどんなのが作れるか、英語サイトですがデモをご覧ください。
OpenLaszloJavaサーブレットなので、開発時にはJDKTOMCAT等が必要です。

との事。


要は、XMLJavaScriptからなる、LZXでコードを書けば、swf/DHTMLにしてくれるので、RIAできますよって事ですね。


OpenLaszlo自体はServletらしいので、Tomcatが入っていれば動く模様。


Javaで構築された既存の業務システムに、Flashの上物を被せるのにいいかもしれません。


FlashとDBとのやりとりは、FlashServlet → DB → ServletFlash の流れが一般的。
ServletFlash は、XMLで返すもしくは、SOAP通信かな?


結構面倒だったりします。


システム自体を入れ替えるのではなく、RIA化する事が重要かと思うので、OpenLaszloをやってみたい感じです。


年末にでも検証しようかな。


でわ。

SWFObjectの使い方

久々のネタを。


サイトにFlash(swfファイル)を埋め込みたい場合、SWFObjectが便利です。


現状、Ver1.5 と Ver2.1 とがあり、パラメータの指定の仕方が違います。
なので、そのあたりを書きますね。

SWFObject Ver1.5 の場合

new SWFObject(
  [SWFファイル名],
  [embed id],
  [横幅],
  [高さ],
  [Flashのバージョン],
  [背景色]);
具体的な使い方
<script type="text/javascript" src="swfobject.js"></script>
<div id="swf_object"></div>
<script type="text/javascript">
 var swfObj = new SWFObject("sample.swf", "sample", "800", "600", "7", "#FFFFFF");
 swfObj.write("swf_object");
</script>

SWFObject Ver2.1 の場合

swfobject.embedSWF(
  [SWFファイル名],
  [embed id],
  [横幅],
  [高さ],
  [Flashのバージョン],
  [expressInstall.swf],
  [flashvars],
  [params],
  [attributes]);
具体的な使い方
<script type="text/javascript" src="swfobject.js"></script>
<div id="swf_object"></div>
<script type="text/javascript">
 flashvars = {};
 params = {};
 attributes = {};
 swfobject.embedSWF("sample.swf", "swf_object", "800", "600", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>

flashvars : Flash自身に渡すパラメータ
params : Flashプラグインに渡すパラメータ
attributes : よく分からない。。。

今回はこんな感じで。


もうちょっとちゃんと調べたら清書します。


でわ。

SSL対応Apache起動時にPasswordを入力せずに起動する方法 その2

以前、一度やり方を書きました。
SSL対応Apache起動時にPasswordを入力せずに起動する方法


今回は、その2と言う事で、ちゃんとしたやり方です。
■前提
 keyファイル名:2009key.pem

# cp ./2009key.pem 2009key.pem.org.20090727
# openssl rsa -in ./2009key.pem -out 2009nokey.pem
Enter pass phrase for ./2009key.pem: [パスワード入力]
writing RSA key

以上。


念の為、元のkeyファイルをバックアップしてからやって下さいね。


あとは、httpd.conf なり、ssl.conf にて、パスワードを解除したkeyファイル指定すればOK。


簡単ですね。


ちなみに、以下方法で、パスワード無しのkeyファイルも作れます。

# openssl genrsa -out ./2009key.pem 1024

「-des3」のオプションを付けなければおk。


ちゃんとパスワードを付けて運用するのが一番良いのですが・・・


でわ。

商品詳細画面にて「Warning: getimagesize」が表示される問題の回避策

今回は、EC-CUBE 2.4.0 です。


商品詳細画面を表示すると、以下、表示されました。

Warning: getimagesize() [function.getimagesize]: Filename cannot beempty in /home/sodc/www/eccube-2.4.0/data/class/pages/products/LC_Page_Products_Detail.php on line 282


原因は、商品詳細画面にて使用する、商品の拡大画像が登録されていないから。
管理画面で商品の拡大画像を登録すれば、上記表示されません。


しかしながら、商品の拡大画像をいちいち登録していくのはナンセンスなので、ちょろっとソースを修正してい対応します。

# cd eccube/data/class/pages/products
# vi LC_Page_Products_Detail.php

// 以下をコメントアウト
Line 276
  // 拡大画像のウィンドウサイズをセット
  if (isset($this->arrFile["main_large_image"])) {
    $image_path = IMAGE_SAVE_DIR . basename($this->arrFile["main_large_image"]["filepath"]);
    } else {
      $image_path = "";
    }

    list($large_width, $large_height) = getimagesize($image_path);
    $this->tpl_large_width = $large_width + 60;
    $this->tpl_large_height = $large_height + 80;

Line 500
    // 拡大画像のウィンドウサイズをセット
    if (!empty($this->arrFile["main_large_image"])) {
      list($large_width, $large_height) = getimagesize(IMAGE_SAVE_DIR . basename($this->arrFile["main_large_image"]["filepath"]));
    }
    $this->tpl_large_width = isset($large_width) ? $large_width + 60 : 0;
    $this->tpl_large_height = isset($large_height) ? $large_height + 80 : 0;

これでWarningの表示はなくなります。


そんな感じで。


でわ。

Smartyでファイル出力エラー

PHPのテンプレートエンジンである、Smartyを使用したWebサイトにて不具合が。


エラーの内容を見てみると、

Smarty error: problem creating directory [ディレクトリパス]

が出力されていました。


Apacheのサービスは正常動作している。
Apacheのエラーは出力されていない。
ディレクトリのパーミッションも問題無し。
phpinfo見ても大丈夫。


って事で、ちょっとハマりました。


結果、原因はinode。
※WebサーバはLinuxCentOS


Smartyが出力するキャッシュのディレクトリにえらい数のディレクトリとファイルがあり、inode を超えていたようです。


なので、とりあえずはキャッシュ削除して復旧。


調査している中で、

Smarty.class.phpの、
var $use_sub_dirs = true;
を、
var $use_sub_dirs = false;
にすれば大丈夫。

とのエントリもありましたが、既に false になっていた。。。。。


暫定対応ですが、定期的にキャッシュ削除するスクリプトでも組んで、cronで回そうかと思います。
根本的な対応はまた別途。


でわ。