PHPの最近のブログ記事

CakePHPを使って開発をしていて、
formヘルパに独自の処理を追加したかったので
/app/views/helpers の下にform.phpをコピーして編集。

ローカル環境では、それでapp側のヘルパが認識されるんだけど、
本番環境では認識されない。

色々探してみた結果、 /app/tmp/cache/persistent のキャッシュが
原因ぽいことが判明。おそらく、クラス→ファイルパスを保存しているのだと思われる。

どうせキャッシュなので、さくっと全削除。
きちんと認識されるようになった。
PHPプログラムを専用サーバに載せて販売しようというプロジェクトで
プログラム流出を抑えるための対策を検討中。

自分の知ってるプログラムがionCube PHP Encoderを使っていて、
値段も許容範囲だし使い勝手も良さそうだなと思っていたのですが、

PHP5.2.5以上だと、dl関数の挙動が変わっている関係で、
ソフトが稼働するサーバの条件が厳しくなっているようです。

5.2.5以前だと、PHPのdl関数でロードするモジュールのパスに制限はありませんでした。
そのため、共用サーバのような、php.iniをいじることができないサーバでも使用することができました。

しかし5.2.5以降、dl関数ではextension_dirフォルダのファイルのみがロードできるようになったようです。
おそらく、セキュリティに配慮して、ということなのでしょうけど。

導入対象のサーバとして考えているカゴヤの専用サーバ
動作確認用のサーバで確認してみると、PHP5.2.8が導入されていました。

php.iniもしくはhttpd.confを書き換えることができれば良いのですが、
このプランはroot権限を使えないため、不可能。


何か方法はないかと思って色々調べていると、このサーバ、
どうやらZendOptimizerが入っている模様。

つまり、ZendのPHPソース暗号化ソリューションの
Zend Guardを使ってエンコードしたコードを動作させられるということ。

とは言え、価格を見てみると一年ライセンスで15万、永久ライセンスは42万とか...さすがに高すぎる

で、ふと、Zendの英語サイトを見てみると、ダウンロード版が$600らしい。なんと!

日本語版と英語版の違い、Webには説明がないけど見たところではメニューが違うだけな気がする。
そもそも、ローダーのZendOptimizerが共通なので、大きく違うはずもないんだけど。
それどころか、ライセンス登録画面も非常に似ていて、まさか、ライセンスファイル一緒じゃないだろうなあ...

  1. 英語版を購入($600)
  2. 日本語版のトライアルをダウンロードして、英語版のライセンスを適用
  3. 日本語版使える!

とか、ありなんだろうか。

ま、とりあえず、英語版(トライアル)をインストールして、
きちんとエンコードできるか(主に日本語の部分)確認してみます。
仕事で使う機会が意外と多い。
今は必要な部分だけその都度調査しているんだけど、一度全体的に見ておいたほうがいいかも。

XOOPSプログラミング逆引きメモ
http://tokita.net/modules/pukiwiki/31.html

Xoops: フォームエレメント
http://homepage1.nifty.com/phinloda/site/hints/xoops_form.html

PHPの開発環境としてはXAMPPを使用しているのだが、これでMovableTypeも動けば便利だと思ってセットアップした。

WinXPローカルでXAMPPを使ってMovableTypeを動かす
http://likealunatic.jp/2007/06/04_xampp_mt


windows vistaでも特に問題なく完了。
これで、プラグインの開発なんかも気軽にできそう。

とあるサーバーからPHPで電子メールを送信してそれをGmailやHotmailで受け取ると、ヘッダの一部がうまく読み取られず本文に表示されるという問題が発生した。

調査してみると、改行コードが原因だった。


Subject(メールのタイトル)に長文を指定したときは、エンコードしつつ複数行に分割、間に改行コードを挟んでいたのだが、この改行コードとして"\r\n"を指定していた。

メールヘッダの改行コードは"\r\n"だとどこかで読んだためなのだが、PHPのmail()関数では入力した値をそのままsendmailに渡しているようで、つまり、これはサーバの標準の改行コードである"\n"を指定する必要があったらしい。

改行コードを"\n"に変更したら、ヘッダも正常に読まれるようになった。


ちなみに、さくらインターネットやその他のサーバーでは、"\r\n"で挟んでも正常に動作した。
sendmailの中身・バージョンが違うのかもしれない。


メールクライアントによっては、この改行コードの違いを吸収してしまう。
この問題は、Yahoo!メールやthunderbirdでは発生しなかった。


さくらインターネットでは、送られてきたメールは
 
/home/(さくらのアカウント)/MailBox/(メールアドレスの左側)/

の下にファイルとして保存されるので、それらのファイルを直接ダウンロードして調査した。


文字コードと改行コードについて
http://tech.bayashi.net/pdmemo/chara.html

PHP4、PEAR不使用。

そのものズバリのコードが見つかった。

 

サーバ側でPOST送信処理(PHP4) - EASYGOING

http://blog.eco.sunnyday.jp/?eid=516112

 

 

このアーカイブについて

このページには、過去に書かれたブログ記事のうちPHPカテゴリに属しているものが含まれています。

前のカテゴリはPCです。

次のカテゴリはクラウドです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

PHP: 月別アーカイブ

Powered by Movable Type 4.0