アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaScriptの外部ファイル読み込みについてご教授下さい。

現在、Webサイトを作ろうとPHPとJavaScriptをレンタルサーバーにアップしたのですが、
ローカルではPHPから外部ファイルのJavaScriptを読み込めるのに、
サーバーにアップするとPHPからJavaScriptを読み込めなくなってしまいます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>TEST</title>
<meta charset=utf-8" />
<script type="text/javascript" src="./js/jquery-1.4.2.min.js"></script>
・・・

上記のようにしてもjquery-1.4.2.min.jsが読み込まれず、jQueryが使えません。
FireBugでスクリプトを確認すると以下のようなエラーが出ていました。

1Failed to load source for: http://xxx.my-sv.net/js/jquery-1.4.2.min.js

ちなみに以下のようにJavaScriptファイルを開こうとするとブラウザは真っ白なのですが、
http://xxx.my-sv.net/js/jquery-1.4.2.min.js

テキストファイルに変更したものだと中身を見ることができました。
http://xxx.my-sv.net/js/jquery-1.4.2.min.txt

ブラウザはFireFox3.0.11とIE8.0の両方でダメでした。

なぜJavaScriptファイルだけ読み込めないのでしょうか。
ご教授お願いいたします。

※ちなみに、別のレンタルサーバーにアップロードしたら問題なく読み込めました。
しかし、そこにはDBがなかったので、なるべく今のレンタルサーバーを使いたいのです。。

A 回答 (3件)

以下の情報からの推測ですが、


まず、my-sv.netのサーバーは
http://www.my-sv.net/server.shtml

Apache 2.2系を使ってますね。

さらに、質問者様と似たような問題を起こして解決された方で、
http://forum.jquery.com/topic/can-t-load-jquery- …

Apacheの設定にて、
1.;EnableMMAP off
2.;EnableSendfile off

にすると直ったと書かれています。

さらに、EnableMMAPについて調べてみると
http://heppoko.blogdns.net/?p=3262

ネットワークマウントされた DocumentRoot (例えば NFS や SMB) では、
カーネルは自身のキャッシュを使ってネットワークからのファイルを
送ることができないことがあります。

と書かれています。
また、質問者様が試された、255Byte以上のファイルにて失敗されていると
いうことですよね。

ご存知かと思いますが、DocumentRootは通常、Apache WebサーバーのRootフォルダーの
デフォルトフォルダーになりますから、DocumentRoot以下に多くのファイルが集まるため
容量は大きくなります。

そのため、ネットワーク経由に大容量のディスクを持った別のLinuxサーバーを立て
そのLinuxサーバーのDocumentRootフォルダーを大元のサーバーにマウントすると
いう運用は十分に考えられます。

これらの事を総合して推測するに、
・ApacheがjQueryのファイルを転送するのに複数のサーバー間での
ネットワークでの転送が起こる
・サーバーでは、ファイルを転送するのに通常はキャッシュを使ってしまう

ということが推測されます。
と、なると、
・サーバーのカーネルのキャッシュをオフにしてもらう
・Apacheがネットワーク転送でサーバーの設定を使わないように設定してもらう

どちらかの対応が必要かと思います。
サーバーのカーネルのキャッシュをオフにしてしまうと、高速なファイル転送が妨げ
られる可能性もありますから、
後者のApacheの設定を変更してもらうようサーバー管理者に問い合わせては
いかがでしょうか?
具体的には、上記のように、httpd.conf内で

1.;EnableMMAP off
2.;EnableSendfile off

をする。という事です。
もし、これで直らなかったらごめんなさい。
DBが使える他のサーバーがサクッと見つかるといいのですけどねぇ。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます!

サーバーかApacheの問題の可能性が高いのですね。。
用語については後々調べようと思います。

今、管理人さんが原因を把握し、対処してくれてるそうなので、
その結果をまずは待つことにしました。

それで厳しそうなら、無料じゃないレンタルサーバーを利用しようかなと。。

どうもありがとうございました!

お礼日時:2011/03/20 16:32

255バイト・・・・


これだと ほぼ何もできない気がする

255kバイト・・・

どちらにしても jsだけ読めないということですね。

邪道・そして 重い方法・お勧めできないかもしれない方法ですが、、別のレンタルサーバーにjs をおいて
(もちろん管理者 は本人のもの!!マナーです)
それを読みに行く・・

それでもできなかったら、サーバーが何か仕掛けてるとしか。。
    • good
    • 0
この回答へのお礼

ありがとうございます!

ご教授のとおり、別のレンタルーサーバーにおいたJavaScriptを指定すると動作しました。

また、レンタルサーバーの管理人さんに事情を話したところを、現象を把握し、対処してくれるとのことでした。

ですので、原因が判明するまではnoris02さんに教えていただいた方法で対処したいと思います。
どうもありがとうございました。

お礼日時:2011/03/20 14:08

はっきりしたことは 私にはわからないのですが、



<meta http-equiv="Content-Script-Type" content="text/javascript">

jquery-1.4.2.min.js の ファイル名を jquery.js に変更して 試してみるとどうなりますか?
バージョン残しておきたい場合は jquery.js?ver=1_4_2 など。

この回答への補足

ご連絡ありがとうございます!

ご指摘の2点を早速試してみましたが、現象は変わらずでした。。

自分で色々試したところ、そのレンタルサーバーに255Byte以上のJavaScriptファイルをアップロードするとそのファイルは読み込めないようです。
255Byte以下のJavaScriptファイルでは読み込みができ、動作も確認することができました。

レンタルサーバーの問題なのでしょうか。。
それとも利用しているFTPソフト(FileZilla)が関係しているのでしょうか。。

補足日時:2011/03/20 00:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!