AN HTTPD ゲストブック/コメント集(2005年10月31日08:38)


福田健 fkd@is.seisen-u.ac.jp 2005/11/07 10:55

果歩さんへ

> prepend.phpは http://homepage1.nifty.com/yito/anhttpd/faq/prepend.html の上部
> で紹介されている方法でしょうか?

そうです。PHP5に関する詳細は、同じいとさんが、

http://homepage1.nifty.com/yito/anhttpd/faq/php5.html

に紹介されています。

> PHP5にはincludesフォルダがないようで同じように
> やっていいのか少しわからないのですがphp.iniでその場所を指定すれば問題ないですよね

そうです。includesでもincでも、適当なフォルダを作って指定するだけだと思います。

> XOOPSですがphp5.0.5で作動確認がとれたということですが私も試したところデフォルトの
> モジュールは問題なく動いているのですがかなりメジャーなモジュールがいくつか正常に
> 動かなくて少し困っています。(php4では動いていたのですが)

私が記したPHP5による作動確認とは表面的なレベルのものに過ぎません。基本モジュールの挙動、データベースとの連携、などは注意しているつもりですが、それにしても数時間程度の評価使用だけです。その意味では不用意な発言だったかもしれません。従って、XOOPSについて比較的長時間の使用で問題が発覚していないのはPHP 4.3.11での作動のみです。


果歩 kahos@mcn.ne.jp 2005/11/04 04:34

★福田健さんへ
>XOOPS 2.0.13a JP http://jp.xoops.org/ php 5.0.5(+prepend.php)でも作動。

prepend.phpは http://homepage1.nifty.com/yito/anhttpd/faq/prepend.html の上部
で紹介されている方法でしょうか?PHP5にはincludesフォルダがないようで同じように
やっていいのか少しわからないのですがphp.iniでその場所を指定すれば問題ないですよね

XOOPSですがphp5.0.5で作動確認がとれたということですが私も試したところデフォルトの
モジュールは問題なく動いているのですがかなりメジャーなモジュールがいくつか正常に
動かなくて少し困っています。(php4では動いていたのですが)

福田さんの環境ではそういったモジュールによる不具合などが出たことはありますでしょうか?
こちらの設定のミスなんでしょうかねぇ。


福田健 fkd@is.seisen-u.ac.jp 2005/10/31 15:15

2つ下で、「なお、nucleus 3.2.2相当(3.2.1+応急パッチ)については、メール通知に関するbare LF問題で躓きましたが、以下の処理で切り抜けました。」と記しましたが、正確には、切りぬけられていませんでした。

具体的には、2つ下の対処では、メッセージボディーについては正常に処理されますが、メッセージボディー末尾に置かれる"."のみ行(End of Message)の行末については、依然としてbare LFのままです。

この状態でも受け取ってくれるSMTPサーバもあるようですが、駄目なところも多く、前回の対処に加えて、仕方なく以下の追加対処をしました。

ローカルに簡易のSMTPサーバをおき、nucleusからの通知メール(phpの@mb_send_mail使用)のあて先は、そのローカルのSMTPサーバ上のメールアドレスに設定します。そして、そのメールをローカルのSMTPサーバ上から本当のあて先に自動転送する設定をします。

メッセージボディー内のbare LF → CR+LF変換を行わないローカルのSMTPサーバであっても、メッセージボディーの末に付く上記の"."の行末コードについては、自動転送の際に、結果的にbare LF → CR+LF変換を行います。その結果、外部のSMTPサーバでも、正常にメールの中継が行われます。

ローカルのSMTPサーバ自体に中継を任せてもいいのかもしれませんが、そうすると、今回の場合には、動的IPアドレス上のサーバであるため、そこから直接受信者のMXに投げようとすると、一部の受信サイト(特に携帯電話キャリア)がSPAM対策として受け取り拒否します。そこで、上記のような面倒な手順になりました。

とりあえず、その場しのぎです。本質的には、php内に手を入れるしかなさそうに思えます(みんな、どうしているのだろうか?)。


福田健 fkd@is.seisen-u.ac.jp 2005/10/31 08:38

毎度、お世話になります。

Windows2000 server SP4 + Anhttpd 1.42n + php 4.3.11(+prepend.php) + MySQL 4.0.24(mysqld-max-nt)で、以下の作動確認がとれましたので、ご報告しておきます。

・La!cooda WIZ http://wiz.syscon.co.jp/
php 4.4.0(+prepend.php)および5.0.5(+prepend.php)でも作動。

・nucleus 3.2.2(日本語版) http://japan.nucleuscms.org/
php 4.4.0(+prepend.php)でも作動。php 5.0.5(+prepend.php)では実行時エラーあり(対処を試みていない)。nucleus自体の問題として末尾の問題あり(対処可能)。

・XOOPS 2.0.13a JP http://jp.xoops.org/
php 5.0.5(+prepend.php)でも作動。php 4.4.0(+prepend.php)では実行時エラーあり(対処を試みていない)。

なお、nucleus 3.2.2相当(3.2.1+応急パッチ)については、メール通知に関するbare LF問題で躓きましたが、以下の処理で切り抜けました。

nucleusのphpスクリプト中の@mb_send_mail()を呼ぶ箇所で、その引数のメッセージボディー中の行末コードを強制的にbare LF→CR+LFに変換するように、以下の変更を加えました。具体的な変更箇所は以下の通り(実は無関係と思われる部分も含む)。

action.php, member.php, notification.php, mb-emulator.phpの中で@mb_send_mail()を呼ぶ直前行に、以下の1行を加える。
$message = str_replace("\n", "\r\n", str_replace("\r\n", "\n", $message));

bare LF問題とは、メッセージボディーがrfc2822に準拠していない行末コードbare LFになっている部分があるために、qmailなどを使っているSMTPサーバではじかれる問題です。


XOOPS Cubeのフォーラムの以下の記事によると
http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=850&forum=2&post_id=3815#forumpost3815
一部のモジュール(例えばmyalbum-Pやxhld)が PHP5では動作しないのは AN HTTPDに限った話ではないようです。(いと)