鈴鹿高専の白井と申します.
つい1週間ほど前にxamppliteを用いて,moodle1.7.1を Windows2000 SP4のPCにインストールしました.インストールしたPCは学内LANに接続されており,プロキシサーバを介してインターネットに専用線で接続されています.ほぼ同じ環境を Windows XP SP2のPCにて確認しましたが,ほぼ同じ現象が発生します.
(問題)
言語パックを管理メニューからインストールできない.
(現象)
[A] 新しく選択してインストール:
"コンポーネットをダウンロードできません。" と表示され,単にインストールされない.
[B] いま現在インストールされている言語(例えば日本語)を選択した場合,あるいは”利用中の全ての言語パックを更新する”:
いま現在ある言語パックがフォルダ(moodledata/lang/ja_utf8)ごと削除され,単にインストールに失敗する.
(調査結果)
デバッグをONにして新たな言語パックのインストールを試みたところ,
Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: ���̂悤�ȃz�X�g�͕s���ł��B in C:\xampplite\moodle\lib\componentlib.class.php on line 461
Warning: fopen(http://download.moodle.org/lang16/languages.md5) [function.fopen]: failed to open stream: No such file or directory in C:\xampplite\moodle\lib\componentlib.class.php on line 461
の2つのワーニングで発生しています.componentlib.class.phpの461行目,
if ($fp = fopen($source, 'r')) {
でワーニングが発生,これが原因で langimport.phpがコンポーネントのダウンロードに失敗しているらしいことが分かりました.
Warning2件のうちの1件目で,getaddrinfo failed:の後が化けています.できる範囲で調べてみましたが何を表示しようとしているのか分かりません.2件目のWarningで,$sourceが正しく"http://download.moodle.org/lang16/languages.md5"を指し示しているらしいことは確認できます.では,このサーバからdownload.moodle.org/lang16/languages.md5を見えないのか,と云えば,Webブラウザを用いることで,
---
af_utf8,7a8e9bfd778916f6a0183d913f0b2cd3,Afrikaans
ar_utf8,cb62603c6ad280c3a280f65f2d1136bb,عربي
・・・---
af_utf8,7a8e9bfd778916f6a0183d913f0b2cd3,Afrikaans
ar_utf8,cb62603c6ad280c3a280f65f2d1136bb,عربي
---
のように,ファイル名,MD5コードなどのリストが表示できますので到達できているようです.では,moodleのhttpのプロクシホストの設定が正しくないのか,といいますと,192.168.0.1,ポートを8080に設定しているのをhttp://192.168.0.1(明白に変ですね)に変更すると,
Warning: fsockopen() [function.fsockopen]: unable to connect to http://192.168.0.1:8080 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:\xampplite\moodle\admin\langimport.php on line 386
と表示され,言語パックのリスト一覧が取得できないので手動でインストールするように,という日本語のメッセージが表示されます.以上のことからプロクシホストは正しいように思えます.ちなみに192.168.0.2に設定(そのようなプロクシは存在しない)すると,やはり60秒後にTimeoutが発生して,
Warning: fsockopen() [function.fsockopen]: unable to connect to 192.168.0.2:8080 (�ڑ��ς݂̌Ăяo���悪 ���̎��Ԃ�߂��Ă������������Ȃ�������߁A�ڑ��ł��܂���ł����B�܂��͐ڑ��ς݂̃z�X�g���������Ȃ�������߁A�m����� ꂽ�ڑ��͎��s���܂����B ) in C:\xampplite\moodle\admin\langimport.php on line 386
のエラーが発生します.192.168.0.1で正しいのではないかと思う根拠の一つです.
PHPによるfopen()のエラーで調べてみたところ,php.iniの設定で,
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
をOffにしている場合にもエラーが出るという話がありましたので確認しましたが,上記のようにOnです.
学内ネットワークの内側と,さらにその内側の研究室内LANの内側(192.168.0.*)の双方で試しましたが,どちらでも状況は変りません.
OSがwindowsであること,プロキシを経由していること,この辺りに原因があるのであって,他の方々に問題が生じていないと思われるのはこのせいか,と思います.最新のmoodle1.7.1+で上書きしてみましたが,この問題は解決しません.
何が原因か,その切り分け方法に何かアドバイス頂けないでしょうか.当方,PHPは全くの初心者です.C/C++言語は分かりますので,なんとなくソースを追いかけたのですが,Apacheを含めたネットワークに問題があるような気がする,というところまで追い詰めたところで限界です...