2006年11月30日木曜日

いや~疲れた。メール関連は一区切りつけよう。

ちょっと、MODx と PHP は開発畑を通過してきていないオラにとってはレベルが高い。
とりあえず、メールは送れた、ということで詳細の修正は また今度。

しかし、運用前までには PHP.INI 内部として UTF8 なんだけど、
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

そりを ISO-2022-JP でエンコードが出来ない。
もっと調べたらわかるんだろうけど、メールの構造理解とPHPの理解、MySQLがらみを同時にするだけでもアップアップ。

$headers = mb_encode_mimeheader("From: $from_email"."\r\n");
$subject = mb_encode_mimeheader( base64_encode($subject."$from 様より"));
$body = mb_convert_encoding( "お名前: $from 様\nEメール: $from_email\nお問い合わせ内容:\n\n".$message,"ISO-2022-JP");

だめでしたね。またレベルが上がってから考えようかな。


MODx-日本語フォーラムで皆さんのご協力によって、話が大きく展開してます

感謝! Zeroさん、Custerさん

2006年11月27日月曜日

コンタクトフォームでメールSendエラー⇒暫定解決

現状原因不明

試しに MODx0.9.5rc2 でContactUSすると下記のエラー


[[Contac tForm? &sendTo=`[(emailsender)]`]]

[!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`[(email_sender)]` &ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &gotoid=`46` !]

PHP error debug

mail() [function.mail]: SMTP server response: 451 MELON ssmtpd: Invalid mail address valign="top" type/ Nr.: Warning - 2
C:\Program Files\xampp\htdocs\modx095\manager\includes\controls\class.phpmailer.php
438 valign="top" 438 source: $rt = @mail($to, $this- $body, $header);

ぁゃιぃ

\manager\includes\controls\class.phpmailer.php (0.9.5 で)

これは下記のサイトの事例が参考になりそう

Yet Another 仕事のツール

PHPのメール送信機能を補助するための汎用的なメール送信ライブラリ ですと。


よく見ると 0.9.2.1 側は違うなぁ(セキュアしてないです)

[[ContactForm? &sendTo=`[(emailsender)]`]]
PHP error debug

mail() [function.mail]: SMTP server response: 451 MELON ssmtpd: Invalid mail address valign="top" type/ Nr.: Warning - 2
C:\Program Files\xampp\htdocs\modx\manager\includes\document.parser.class.inc.php(705) : eval()'d code
108

少し上記と違うな。


今日はここまで。まだ、snipet がわからない。文字コードでひっかっかってるのか? もっとそれ以前の話なのか? 



解決しました!

2006年11月26日日曜日

MODxの備忘録

ZeRoさんからのアドバイス

SQLのコードをutf8_binへ変えた方がよい。

→なぜbinか/binとは何か? バイナリ? 095rc2 はこれだった。

→ほかにもユニコード系が沢山あるが違いは何で 何を選択するか?

→フィールド毎には照合順序は指定していない(一括変換できるかも。既存のデータに問題ないか?)

→どこを修正すべきか、phpMyAdminの操作方を調べる

→将来的にはSQLの直接理解

→あ、MSACCSESからどうインポートするか

ブログの分割

→MODx版新設

→どうやって?

2006年11月24日金曜日

解決・MODx言語環境を修正

いや~、言語環境による問題ではありませんでした。(ZeRoさん本当にご迷惑おかけしました)
問題
WEBサインインの
名前
は問題なく登録される。
住所のところだけは、東? 以降の京都 国分寺...は切れる。
郵便番号***-* 以降は切れる。

そこで、ふ、と問題はまったく違うところにあるのではと思い
WEBサインインの
名前に 東? で切れてしまった住所(東京都 国分寺...)と同じものを登録する
すると、
名前:東京都 国分寺 *****
…くそ~、くそ~、くそ~そういうことだったのか~! 問題のすべてが解決された。
申し訳ないですがMODxユーザにはなんの参考にもならない足跡になってしまいました。
phpMyAdminからmodx_web_user_attributesの中身をのぞいてみると・・・やっぱり・・・Orz







 実は、私が住所といってたのは、SampleのUS標準のstate(県/州)、zip(郵便番号)をまんま使ってたのです。名前には入力文字が入りstate/zipには文字が途中で切れたのは(100)と(5)の違いでした。要は文字をいれる箱のサイズが小さかったということです。ZeRoさんホントすません(汗 修正後、正しく文字が入るようになりました。


しかし、MODx上では問題なく表示されるがphpMyAdmin上では全角は文字化け表示される


照合順序という値が見慣れない Latin1_general_ci になっていたのでためしにUTF8 sjis euc に変更してみるもののなんも変わらなかったので、標準のlatin...に戻しておく。


あとは、メールの中にCharsetが入らない問題の解決だ! でもphp.iniの設定を弄れば何とかなるのかなと思ってます。

本気でMODxあきらめようかと思ってました。

2006年11月23日木曜日

続・MODx言語環境を修正

現在のMODxで直面している問題をいったん整理。
  1. メールでの文字化けは起こっていない(間違い)。しかし、ヘッダにはcharasetの指定が無いのでメーラは正しくエンコードできない場合がある。
  2. WEBサインアップの際、登録した住所か漢字一文字目以降が表示されない。
    重大な事が発覚--ZeRoさんのアドバイスに沿って英数Onlyで登録してみたところ
    Tokyo hogehoge... ⇒ Tokyo までしか登録されていない。〒も
    123-4567 ⇒ 123-4 までしか登録されておらず
    文字化けの問題じゃないのかぁ...(MySQLは文字セットUTF8、照合順序utf8_unicode_ci で正しくセット
  3. ContactFormから問い合わせを送信するとエラー発生
改善、追加したいこと
  1. ユーザーの登録項目を任意のものを追加したい(簡単に)
  2. eFormなるものは何か知りたい(前から気になってた)
  3. ユーザによる個人情報変更画面ってあるのか(まだ調べておらず)

さて、ここから本題

PHP初心者には非常に参考になる記事を発見!
PHPの内部の仕組みと文字化けの要因、mail()関数->mb_send_mail()関数の置き換えの方法
Yet Another 仕事のツール
第64回 phpCollabでプロジェクト管理(4) メール送信の文字化けを解消する

...mail()とは別に、文字エンコーディングの変換機能を持たせたものが、mbstring拡張に含まれる「mb_send_mail()」関数だ。つまり、mail()関数をmb_send_mail()関数に置き換えれば、メールの文字化けは解消される...スクリプト中でmail()関数を使用している箇所を洗い出して、全部 mb_send_mail()に書き換えるというのもかなり面倒である。そこで、php.ini設定ファイルの、mbstring.func_overloadパラメータを「1」に設定すれば、自動的に全てのmail()関数の代わりにmb_send_mail()関数が実行される。

; overload(replace) single byte functions by mbstring
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 1
<続きあり>
試してみたが変わらず。でも考えてみたらこの文字化けってmail関数って関係あるのかな?追ってみないとわからないんだけど、メールの文字化けじゃなくてMySQLへの登録時の文字化けなのではないだろうか。
2chの投稿
grep で調べたところ、MODxでは明示的に SET NAMES されてないようです。
そこで、ためしに manager/includes/header.inc.php の5行目に
$sql="SET NAMES utf8;";
mysql_query($sql);
を参考に同様のことをやってみたが、正しく表示されていた日本語の姓名まで文字化けする羽目に。

2006年11月22日水曜日

MODx言語環境を修正

UTF-8またはEUC-JP環境 を参考にphp.iniを修正。



; PHP's built-in default is text/html

default_mimetype = "text/html"

default_charset = "UTF-8"



[mbstring]

; internal/script encoding.

; Some encoding cannot work as internal encoding.

; (e.g. SJIS, BIG5, ISO-2022-*)

mbstring.internal_encoding = UTF-8



; http output encoding. mb_output_handler must be

; registered as output buffer to function

mbstring.http_output = UTF-8

⇒ SJIS の方が良いのか今一わからん。

(というのはSJISで吐き出したら携帯電話からでも見れるかな~と思いまして)

くそ~、またしても

東京都 hogehoge

にならず

東�

だ! 恐るべし言語の壁

MODx Win32環境におけるphpファイルの保存形式(備忘録)

/assets/snipet 配下のファイルを翻訳し日本語を入力すると文字化け。



K2Editorで

ファイル ⇒ 使用し保存時も文字コードと改行集類の変更



文字コード:UTF-8N 改行コード:CR+LF



それでも文字化が続くことがあるが、日本語の前に半角文字を入れた後に表示すると、正しく認識された。

(キャッシュの問題かもしれない)



Tarapadやメモ帳では、うまく保存できなかったような...?




備忘録

MODx管理>ユーザ設定の詳細

MODx管理 ⇒ ユーザ設定の

  1. サインアップメール:
  2. ウェブサインアップメール:
  3. ウェブリクエストメール:

の関係。

  1. はユーザがドキュメント上でサインアップしたときに送信される。
  2. はMODx管理者による修正時のメール通知の時の送信される。
  3. はユーザがドキュメント上でパスワード忘れで再発行時に送信される。
と、ふんでいる。



違ったみたいです。

  1. MODxマネージャのサインアップしたときに送信される。
  2. WEBサインアップのメール通知の時の送信される。
  3. はユーザがドキュメント上でパスワード忘れで再発行時に送信される。
と、ふんでいる。ってまんまじゃん。



2006年11月21日火曜日

続・MODx ユーザ登録すると (追記1,2

『MODx ユーザ登録すると』 続編です。



まずは、 php.ini のサーバー設定を弄っていて、どうも既存の Sendmail はWindowsでは使えなさそうだとわかる。(何でだろう。実行形式のSendmail.exeがあるのに & フリーの sendmail ダミーもあるみたい)

また、既存のsmtpサーバアドレスを設定してもメッセージ的にはナンも変わらない(未だ謎)



ZeRo殿の助言をして、 Melon なる送信サーバもどきをインストールする。

その後、それでも送信されなかったが、[MODx設定]項目の[送信者メールアドレス]の値を変更すると送信できるようになりました。(歓喜)



しかし、問い合わせフォームからメールを送ると、また似たメッセージが

« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »


PHP error debug
Error: mail() [function.mail]: SMTP server response: 451 MELON ssmtpd: Invalid mail address

Error type/ Nr.: Warning - 2

File: C:\Program Files\xampp\htdocs\modx\manager\includes\document.parser.class.inc.php(705) : eval()'d code

Line: 108



Parser timing
MySQL: 0.0240 s s(5 Requests)
PHP: 0.1374 s s

Total: 0.1613 s s
やるな、あくまでゆーこと聞かないきか!

とりあえず、スムーズに行かないな。たまに登録通知メールの文字化けが起こったり追記2:原因発覚、WEBユーザの登録住所が 東京都 hogehoge...となるところを 東? でぶち切れて登録されてたり。



いや~Xoopsとかの方がいいのかなぁと、後ろを振り返りそうになる。

明確な納期は無いが、一般公開したときにあまりユーザーの迷惑や運用に負担をかけたくないなぁ。



追記1 06.11.22

MODx設定- の送信者メールアドレスも正しく設定されている

スニペット [[ContactForm]]内の $recipient_array には正しくメールが設定されている



追記2 06.11.22

送信先がUTFに対応していない携帯メールでした(あほです)

編集後記

php.ini Melon 等の設定を知りたいというリクエストがあればアップします。しかし、見てる人がいないのでリクエストがくるわけがないと思いますが、たぶん簡単なので今回は省きました。

[MODxフォーラム]-ログインで3回以上失敗に伴うブロック解除

ログインで3回以上失敗してしまいましたの補足です。



実際MySQLも使用したことなし、そのとおり phpMyAdmin の SQL から下記のコマンド打つが失敗。

UPDATE `modx_user_attributes` SET `blockeduntil` = '0', `failedlogincount` = '0' WHERE `id` ='1' ;




そこでこのSQLを見よう見まねで phpMyAdmin のGUIから実施したところ問題解決。いかに手順を備忘録しときます、適当に。





データベース接頭辞user_attributes クリック ⇒ 表示 クリック





id = 1の行(蛍光緑)のエンピツ(編集)をクリック

id=1であることを確認し、残りの赤丸に0を入力し実行します。

以上、ご参考あれ。

人生ハードルたけぇなあ!

いや、xAMP & MODxは初心者にはハードル高いな... orz
まずは概要を学び、いろ~んなCMSをざっと見た結果、多少は苦労しそうだけど先見性があると思って飛びついたMODxだが、きびちぃ。説明書もないしPHPもわからんし、XAMPPの恩恵で、まさにApatch、MySQL、PHP(残りのPはなんだ?)の知識も概要程度だけでインストールOK(^o^)/が、あだになって、さっぱわからん (TдT)rz

英語もFujiyama Geisha KoreIkura?くらいしかわかんないし (лдл)rz

Geeklogも捨てがたかったけど、もう後には引けない。半年後くらいに弄ろう。

もっと関心があけど手がつけられないのがPrasi(感謝;Moongiftさん)。思い込みかもしれないけど、さまざまなCMSを結び付けてくれるものなのではないだろうかと、非常に関心ありながらもおとろちくて触れない。ってかLINUXをマスターしないと使えないような気がして。
いつか将来弄ってやる。

ああ、なんて取り留めのないことを書いているんだろう。混乱してるのね、僕。

今までは備忘録として使っていた「やらいでか!」ですが、ZeRoさんの到来で非常にモチベーションがUPしてますね。あまりにもレベルが違いすぎて恐れ多いのですが、小さな心遣いに本当に感謝してます! がんばります。遅いので寝ます。


PHP.INIのSMTPを設定したがまったく状況変わらず。
ついでに設定内のエンコーディング設定変えてログインができなくなり、フォーラムを参考にSQL知らずの私でしたが、PHPAdminで見よう見まねでなんとかトラブル脱出。時間があったらアップします…あるかな…いや、ねーよ。

2006年11月17日金曜日

MODx ユーザ登録すると

以下のメッセージ

« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Error type/ Nr.: Warning - 2
File: C:\Program Files\xampp\htdocs\modx\assets\snippets\weblogin\weblogin.common.inc.php
Line: 60
Line 60 source: if(!mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion())) {
Parser timing
MySQL: 0.0473 s s (11 Requests)
PHP: 1.0368 s s
Total: 1.0842 s s


SMTPの設定の問題だろう。備忘録

2006年11月15日水曜日

Ubuntu6.06 → 6.10 アップグレード

始めて、OSそのもののUPDATEをして少々てこずりました。
私のような初心者のために足跡をのこしておきます。

まずは、アクセサリよりGNOME端末を開いて
gksudo gedit /etc/apt/sources.list

そのリストに以下を追加
deb http://archive.ubuntulinux.jp/ubuntu-ja dapper/

Synapticを立ち上げて更新を欠けます。
検索で「ubuntu-desktop-ja」
このパッケージをアップデートしておく。
(右クリックか何かで↑マークを付け、上段の更新だかなんだかVボタンを押忍)

更新が済んだら再びGNOME端末から以下のコマンドを入力
gksu "update-manager -c"

後は本家(日本)からの引用です。
  1. 「アップグレード」ボタンを押し、ダイアログに従って進める。
  2. パッケージがダウンロード・インストールされる。
  3. 再起動する。
  4. [システム]ー[システム管理]ー[言語サポート]を起動し、標準の言語を「Japanese」に設定する。
  5. ALT+F2を押し、「gksudo gedit /etc/apt/sources.list」を実行する。
  6. 以下の2行を加えて保存する。
        deb http://archive.ubuntulinux.jp/ubuntu-ja edgy/
    deb http://archive.ubuntulinux.jp/ubuntu-ja edgy-ja/
  7. Synapticやapt-getなどでパッケージ情報を更新後、「ubuntu-desktop-ja」パッケージのインストールとアップグレードを行う。
  8. 再起動する。





編集後記:
 さてさて、私が初めてLinuxを使ったのがもう、9〜10年前のことになります。年をとったものだ…いやいや、そんな話じゃなくて.当時はVineLinuxは、画期的なインストールシステムで今までのLinuxの常識をひっくりかえすものでした。
 しかし、今回久しぶりにLinuxのディストリビューションを探ったところ、いや〜変わるものですね〜。LiveCDに驚くわ,パーティッションツールのすごさに驚くわ、インストールの簡単さに驚くわ、ハードウェアの認識率の高さに驚くわで、参った、参った。
 まだ、Windowzに比べてもたつき感や,敷居の高さは感じるものの(なれてないだけ?),非常に未来を感じさせます。基本的作業ならLinuxで十分過ぎてお釣りがくる.
 Micro$oft社もIE7を入れて思ったのが、ライセンス命って感じですね。だから質の高いサービスを提供できるのでしょうが.M$社がIEがシェアNo1と鷹をくくってるのもときの流れとともにNE○PC-98シリーズと同じようにいつかはその牙城が崩れるときがくるような気がします。
個人的な見解として、ユーザーがIEを使うのは性能が良くて皆が使ってるのではなく、他に知らないからNo1だと思ってつかってるんです、きっと。さらにはIEの独裁が他のブラウザの発展を妨げてる大きなにしか思えませんね.
決してアンチM$ではないのですが。I Love ゲイツ.I Love 米利加.

2006年11月8日水曜日

xAMPP導入後のセキュリティ設定について

詳細な設定をアップしているサイトを発見しました。ご参考に。
http://tokyo.atso-net.jp/pukiwikip/?tb_id=f8756d88c7d3b98e2e3f551616d6cbf3

手が空き次第、自分もやってみてレビューしてみようと思ったり、思わなかったり。