2009年2月19日木曜日

php 定数が変数に保存されている場合

phpで変数に定数名を入れて、
それを評価したい場合に使う。

define("MAXSIZE", 100);
$test = "MAXSIZE";
echo constant($test);

// echo $test; ←間違い

です。

エラーIDを動的に取得して、
定数で宣言されたメッセージを表示する場合、
例えば

define("MSG_ERROR_0", "xxxです");
define("MSG_ERROR_1", "yyyです");

こんなときに、$this->errorにエラー番号[0,1]が入ってるとして
echo constant("MSG_ERROR_".$this->error); ←[xxxです]が表示される
// echo "MSG_ERROR_".$this->error; ←[MSG_ERROR_0]という文字列が表示される


気をつけましょう。

2009年2月17日火曜日

mysql4->5移行 joinの順番が異なる

left join xxxx
inner join xxx

などとするとき、mysql4の場合は
inner join した結果にたいして、left joinできてたけど、

myswl5では
先にleft joinをしようとするので、
left joinの条件文に、inner joinした結果を使えないみたいだ。

詳しくは、どこに載ってるんだろう。

備忘録としてメモ。

2009年2月10日火曜日

MySQL トランザクションが効かない

cakePHPを使って、トランザクションのチェックをしてたけど

どうしても、効かない。

答えは

DBのテーブルが[MyISAM]だったこと。

ここらへん

2009年2月9日月曜日

linux sslが繋がらない ポート開放

fedoracore4で、apache2.2を入れて

sslの設定をしっかりしたのに、どうしても

ブラウザがつながらない。

netstat -aしても、しっかりhttpsが[listen]してる。

と思ったら、443ポートがあいてませんでした。

vi /etc/sysconfig/iptables

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 追加

/etc/rc.d/init.d/iptables restart

これで、接続したらちゃんと繋がりましたとさ。

やれやれ、時間かかったー。

2009年2月5日木曜日

SSLでlightbox2を使うと警告

SSL配下で、lightbox2
「保護されている項目と保護されていない項目があります」
が表示される。

FireFoxでページ情報をよく見ると、
"data:image/gif;base64,AAAA"ってな記述が。

これかなーと思って

lightbox.cssの
13行目を
/*background-image: url(data:image/gif;base64,AAAA);*/
と、コメントアウトすると、出なくなった。

複数の画像を見る時に、サムネイルでも作るのかな?
詳しく追ってないけど、1画像だけの場合は、これで解決するのかな。

2009年2月4日水曜日

flex2 style explorerがすごい

flexって、画面のデザイン変更にcssを使える。
これは、webプログラマーには非常にありがたいことなんだけど、
さらに、各コンポーネントのデザインを、guiで変化を確認しつつ
styleを作ってくれるありがたい無料ツールが
flex2 style explorer」だ。
例えば、ボタンをもっと、丸くして、色は青で・・・。
なんてことも、簡単にできちゃうんですよ。

AIR FlexBuilder3でデバッグ実行時にエラー。

ThinkItさんの[AIRでデスクトップアプリを作成しよう]をまねしてみたら

デバック実行時(F11)に
"デバッガへの接続が確立されずにプロセスが終了しました。"

のエラーメッセージ。

■1回目は
XXXX-app.xmlの2行目にある
<application xmlns="http://ns.adobe.com/air/application/1.0">

<application xmlns="http://ns.adobe.com/air/application/1.5">

に修正すると直ったんだが、

■2回目に出たときはどうしても直らない。
悩んだあげく、
プロセス[adl.exe]が残ってたから、二重起動しようとしてエラーになってたっぽい。

タスクマネージャーから、[adl.exe]を見つけて、
プロセスの終了

これで、うまくいきました!!

windowsにApache+SSL

開発環境用でもSSLを対応させておきたいと思って、
windowsでApacheにSSL対応させたので、備忘録。

元々の環境
・Apache2.2 no-ssl版が入っていた。

手順
・既存のApache2.2をアンインストール
 アンインストールしても、confファイルは削除されずに残りました。   

・apache_2.2.11-win32-x86-openssl-0.9.8i.msiをインストール
 http://httpd.apache.org/download.cgiからOPENSSL付きのバイナリファイルをダウンロードし、インストールする。

・ActivePerlをインストール
 opensslを使うには、ActivePerlが必要らしい。

・opensslのWindowsバイナリ版をインストール
 http://www.slproweb.com/products/Win32OpenSSL.htmlから、Win32OpenSSL-0_9_8j.exeをダウンロードしてインストールした。

・opensslで、サーバキーと証明書を作成
 秘密鍵作成 
 

C:OpenSSLbin> openssl genrsa -out server.key 1024



 証明書リクエスト作成
 

C:OpenSSLbin>openssl req -new -key server.key -out server.csr



 証明書作成
 

C:OpenSSLbin> openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650



 
・キーと証明書を設置
キー設置
 server.key, server.crtファイルをapacheのconf/以下に置く
 

conf/server.key
server.crt



 設定ファイル修正
 

conf/extra/http-ssl.confを開いて
 DocumentRoot "xxxxxx"(ファイルパス)
Servername "xxxxx.com"(ドメイン)
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key"




・httpd.confのmod_sslモジュールを有効化
 

#LoadModule ssl_module modules/mod_ssl.so

LoadModule ssl_module modules/mod_ssl.so




・Apache再起動




こんな感じでうまく動きました。

2009年2月3日火曜日

名前ベースのvirtualhostではssl対応できない

ssl対応は、IPベースのvirtualhostしかだめ。

これは、名前に変換する前に、暗号化通信するかららしい。

うーむ、どうしたらいいものか。

自己証明SSLを一発で作る!

opensslが入ってればだけど、次でいけるそう。


openssl req -new -days 3650 -x509 -nodes -keyout server.key -out server.crt


chmod 400 server.key


chmod 444 server.crt


 


キーのパスフレーズを解除する


# mv server.key server.key.back


# openssl rsa -in server.key.back > server.key