※ ChatGPTを利用し、要約された質問です(原文:javascriptとApacheの設定)
Apacheの設定でJavaScriptのエラーが発生する
このQ&Aのポイント
ローカルのマシンにApacheを設定後、テストのために簡単なJavaScriptを含んだhtmlファイルを読み込もうとしたところ「Premature end of script headers」エラーが出ました。
調査しても解決できず、困っています。どなたかご教授頂ければ幸いです。
Apacheの設定ファイルを確認しましたが、mime.typesやScriptAliasなどは正しく設定されているようです。
ローカルのマシンにApacheを設定後,
テストのために簡単な javascript を含んだhtmlファイルをfirefoxから読み込もうとしたところ "Premature end of script headers" が出ました.
自身で調査しましたが,どうしても解決できません.
非常に困っております.どなたかご教授頂ければ幸いです.
【環境】
[OS] Ubuntu 10.04 LTS
[Apache] Version 2.2.14 (Ubuntu)
[Apacheの設定]
初期設定でapache2.conf から (1) httpd.conf, (2) sites-available/default等が include されます.
(2)のファイルのみ以下を変更しました:
DocumentRoot /home/hoge/www/
ScriptAlias /cgi-bin/ /home/hoge/www/cgi-bin/
<Directory "/home/hoge/www/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
また mime.types には次の記述があります.
application/javascript js
text/x-perl pl
【テストファイルの内容】
index.html 644
************************************************************
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Test Example</title>
<script type="text/javascript" src="/cgi-bin/test.js"></script>
<script type="text/x-perl" src="/cgi-bin/first.pl"></script>
</head>
<body>
TEST
</body>
</html>
************************************************************
/home/hoge/www/cgi-bin/first.pl 755
***************************************
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
***************************************
/home/hoge/www/cgi-bin/test.js 755
***************************************
document.write("Content-type: text/html<br><br>");
document.write("Hello World!");
***************************************
【エラーの再現手順】
Firefox 3.6.13 から
(1) http://localhost/test.html とした場合 TESTを出力しログにエラー
[error] [client 127.0.0.1] Premature end of script headers: test.js, referer: http://localhost/test.html
(2) http://localhost/cgi-bin/first.pl (出力正常)
(3) http://localhost/cgi-bin/test.js (Internal Server Error)
perl は大丈夫なのですが js がエラーになります.
補足
> 特定ディレクトリ(この場合は/home/hoge/www/cgi-bin)内の「全てのファイル」を > CGIスクリプトと見なして実行する設定です。 > > そのディレクトリ内のtest.jsもCGIスクリプトと見なして実行しようとしますが、 > #!/usr/bin/perlなどの記述もなく、実行形式のファイルではありませんから、Internal > ServerErrorになります。 ご指摘ありがとうございます. おっしゃる通り私は js ファイルを実行しようとしておりました. ここに大きな勘違いがあったように思います. apache 設定ファイルの中の mine.conf にて "AddHandler cgi-script .cgi .pl .js" の記述がありましたのでこれを削除し,js を格納するディレクトリを新たに作成することによって, 正常に apache 経由で表示させることができました. > JavaScriptの文法や、PerlとJavaScriptの連携はまた別問題ですので、JavaScriptは > JavaScript として勉強して下さい。text/x-perlというtypeもありません。 アドバイスありがとうございます. 少しずつ勉強したいと思います. ご回答ありがとうございました.