前ページのApacheリビルド話ですが、そもそもの起点は少し前に挫折したWebDAVを 使いたいなあ、という事でした。いやフツーに使う分には問題ないんだけど、 どうも2GBを越えるサイズのファイルを送ろうとするとエラーが起きて止まってしまう。
 ログを見ると「Content-Lengthが変だよ」的な内容。色々調べてみたところ、 よーするにContent-Lengthを扱う変数の型「apr_off_t」の大本が32bitのintなので 2147483647byteを越えるサイズに対応できない、という事だった。WebDAVの問題とゆーより Apacheの問題とゆーよりアーキテクチャの問題なのか(苦笑)。
 この手の情報はあんまり見つからなかったものの、一応対応パッチやら 対応コンパイル方法やらは見つかったので試したのだが、どーもイマイチうまくいかない。 ソースに直接手を出して、関係しそうな所の変数の型を「long long」に書き換えたりして とりあえず最初のContent-Lengthで止まる所は突破したんだけど、実際にファイルを送る際に 途中で「ファイルでか過ぎ」で止まってしまった。

 あんま細かいところまで手を出してるヒマと時間が無い。よーするに64bitCPUと 対応OS、及びその環境で作成したApacheがあれば良いわけだ。
 幸いにもウチのマシンはOpteron機。つーかこないだ間違いで作った(笑)Athlon64 FX-51機が 手つかずで残ってる。コイツに64bit版Fedora Core4をインストール。DAV設定。 テスト。・・・・・・無事転送成功。本当の意味で64bitの恩恵に預かったのはコレが初めてだ(苦笑)。 あ、ただしコレはクライアント側はマイネットワークからネットワークプレイスの追加で DAVフォルダを認識させた場合の話。WebDAVへの接続用としてNetDriveがインストールされてるんだけど、 これだと1.8GBくらいのところでエラーになってるっぽい。特にそれっぽい設定ないけどなあ。
 まあ、何にせよこれで対応容量的には実用に耐えうるWebDAVができた。 後は日本語環境の問題だが・・・コレはまだイマイチかねえ(苦笑)。

 あ、あと話は戻るけど前ページhttpd.confのinclude話は、どーやら64bit対応コンパイル (コンパイル時にオプションLARGEFILE_SOURCEとFILE_OFFSET_BITS=64をつける) をした場合にPHPをそのままにしてると起きるっぽい。*.confでまとめてincludeしようと したときに、どーやらPHPのところで止まってたっぽい。個別にincludeした場合でも php.confを取り込んでると、アクセスした時に子プロセスがセグメントエラーで 落ちてしまう。まあ試してないけど、PHPも同様のオプションつけて リビルドすれば問題ないのでしょう。

関連タグ:Apache64bitOS
2005-10-27 [技術・作業]