• ベストアンサー

CGI実行環境下の.jsや.cssが動きません

環境 OS:RedhatLinux ES3 WevServer:Apache/2.0.54 Perl 5.8.0 CGIを設置しているディレクトリのなかに、JapaScriptを書いている xxx.jsとスタイルを定義しているxxx.cssを置いているのですが、 CGIを実行すると、Apacheのエラーログの中に パーミッションが755だと (8)Exec format error: exec of '/hoge/xxx.css' failed, (8)Exec format error: exec of '/hoge/xxx.js' failed, パーミッションを666すると (13)Permission denied: exec of '/hoge/xxx.css' failed, (13)Permission denied: exec of '/hoge/xxx.js' failed, が出力されてしまいます。 もちろん、JavaScriptのエラーも出てしまいます。 .jsや.cssを正常に読み取らせるにはどのようにhttpd.confを 設定すればよいのでしょうか? ※ちなみに、CGIの実行を許可(ScriptAlias)していない ディレクトリでは.jsや.cssは正常に動いています。

  • CGI
  • 回答数2
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.2

ScriptAlias で指定された場所においては、Apache は全てのファイルを CGI スクリプトとみなしてしまいます。 なので、拡張子が .cgi、.pl のファイルだけ CGI とみなして欲しいのであれば、CGI スクリプト以外のファイルを別のディレクトリに置くか、以下のように設定してあげる必要があります。 Alias xxx yyy <Directory yyy> AddHandler cgi-script .cgi .pl Options ExecCGI </Directory>

pingu0918
質問者

お礼

entreeさんご回答ありがとうございました。 <Directory yyy> AddHandler cgi-script .cgi .pl Options ExecCGI </Directory> こちらの記述は既にしていましたが、entreeさんの回答をヒントに ScriptAlias の設定をコメントアウトすることで、正常に 動かすことができました。 ありがとうございました。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

cgiを許可してるだけで 何がcgiなのかを指定してないからとか http://httpd.apache.org/docs/2.0/howto/cgi.html 質問のエラーからはどちらも実行ファイルとして実行しようとしていると取れるからCGI側でそのファイルを実行ファイルとして開こうとしたりする記述があるのでは?

pingu0918
質問者

お礼

SAYKAさんご回答ありがとうございます。 教えていただいたサイトはとても参考になりました。

関連するQ&A

  • SESULinux で CGI をするには?

    http://oshiete1.goo.ne.jp/qa3578211.html で質問していた、初心者です。再び、お願いいたします。 LAN の 中だけで Web サーバ を実行しています。 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin というディレクトリで *.cgi が動くようになりました。 ところが、このディレクトリに、置いた *.html ファイルを別のコンピュータから見ようとすると、Internal Server Error となってしまいます。 Apache の error_log では、 (8)Exec format error: exec of '/srv/・・・/*.html' failed そして、 Premature end of script headers: *.html となっています。 この *.html を htdocs というデレクトリに置くと、OK なのですが...。 また、*.cgi ファイルに open(FILE, '>>aaa.txt') or die "$!"; print FILE ("200,$year年$mon月$day日 $hour時$min分\n"); close(FILE) と書くと、WindowsXP, Apache, ActivPerl では、 自動的に、aaa.txt というファイルができて、 そのファイルに 「200,日付時間」 が 書き込まれたのですが、 SUSELinux 10.1 OSS の ・・・/htdocs/cgi-bin では、 だめでした。これが、できると、大助かりです。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIエラー

    あるCGIを組んでてアップロードしたらエラーが出ました。 もちろんInternalServerErrorでerror.logには (8)Exec format error: exec of 'ほげほげ/test.cgi' failed Premature end of script headers: test.cgi とありました。(ほげほげは気にしないで^^;) ぐぐって見たものの原因はわからず、簡単なcgiをアップロードしてもこのエラーが出ます。 Shift_JISで改行コードLFにしてます。 ASKIIモードにしました。 ヘッダーも入れてます。 いろんな方法を試しました。 ちなみにレンタルサーバーで、CGIはOKです。 都合上期限がやばいので、すぐに回答お願いします!

  • CGIが使えないのはなぜ?

    こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi

  • apache + svn での実行ユーザ

    リポジトリーをsvn + apache + sslで構築しております。 構築作業を完了しチェックアウトおよびブラウザからの確認まではできるようになったのですが、コミット時に以下のエラーがはかれてしまいます。 svn: Commit failed (details follow): svn: Commit failed (details follow): svn: Can't create directory '/var/lib/svnprj/*****/db/transactions/1-1.txn': Permission denied svn: MKACTIVITY of '/svn/*****/!svn/act/90df1d5c-1a01-0010-8e67-11194141f511': 500 Internal Server Error (https://www.********.co.jp) 権限の問題でディレクトリを作る権限が実行ユーザにないのが原因と思いますが、該当の権限は以下のようになっておりました。 drwxr-sr-x 7 apache apache 4096 Jun 2 12:49 ***** svnをapache経由で操作した場合はapacheアカウントで実行すると 思っているのですが、ちがうのでしょうか。 --------- ちなみに該当のディレクトリを chmod -R 777 ***** にするとコミットすることが可能になりました。

  • pythonスクリプト実行不可

    pythonスクリプトをCGIとして動作させるとエラーになります。 環境は、 OS : CentOS 6.4 Python : 2.6.6 pythonソースは、 #!/usr/bin/python # coding: utf-8 print "Content-type: text/html; charset=UTF-8" print print ブラウザーから、このCGIを直接起動すると、/var/log/httpd/error_logに下記のエラーが出ます。 [Fri Oct 18 12:45:28 2013] [error] [client 10.1.34.89] (8)Exec format error: exec of '/home/httpd/cgi-bin/test.py' failed Exec format errorとは、何でしょうか? perl CGIは、正常に動作しているのですが。 アドバイスよろしくお願いします。

  • CGIの設置ができません。

    Apacheのhttpd.confを設定して、aska.cgiという掲示板を動かそうとしているのですが、うまく動きません。 色々調べた結果、httpd.conf内のOptionというところにExec CGIを追記すればいいとのことだったので、 <Directory "C:/Program Files/Apache Group/Apache2/htdocs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> としましたが、 Options ExecCGI is off in this directory: C:/Program Files/Apache Group/Apache2/htdocs/aska/aska.cgi, referer: http://localhost/aska/ とerror.logには表示されてしまいます。 ちなみにaska.cgiは C:/Program Files/Apache Group/Apache2/htdocs/aska/ に入っています。 よろしくお願いします

  • CGI実験環境についてその2

    CGI実験環境についてその1で回答いただいた皆様ありがとうございました。 無事、WEB上で表示させる事ができました。しかし・・・・ さて今度は自作のtest.cgiを動かそうとしたら、パーミッションのアクセスが出来ないというエラーがでました。 ローカルファイルにある、test.cgiファイル属性の変更のやりかたを教えてください。 UNIXでないのでchmod 数値 ファイル名では、属性変更はされませんでした。 WINDOWS上でのファイルのパーミッション変更はどうやるのでしょうか? cgiの場所はc:\apache\test\public_htmlです。

    • ベストアンサー
    • CGI
  • Apacheでcgi-binを隠すには

    Apacheの設定でcgiの実行ディレクトリをcgi-binに限定(DocumentRootでのcgi実行は不可)した場合、 アドレスはhttp://hoge.hoge/cgi-bin/となりますが、 これをhttp://hoge.hoge/で実行しているかのように隠蔽(偽装)する方法はないでしょうか?

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • フォームからCGIを起動できない

    こんばんは。 WebサーバApacheでCGIを作成しています。 DocumentRootが初期設定/var/www/html/で、その下にindex.htmlを作成しました。 次にcgiのディレクトリが初期設定の/var/www/cgi-bin/で、その下にtest.cgiを作成しました。 そして、test.cgiのパーミッションを-rwxr-xr-xにしてからApacheを起動しました。 別マシンのブラウザからhttp://xxx.xxx.xxx.xxx/index.htmlでアクセスし、フォームのテキストボックスに「abc」と入力して送信ボタンを押しましたが、404エラーになってしまいます。 (アドレスバーには「http://xxx.xxx.xxx.xxx/test.cgi?NAME=abc」と表示) ブラウザのアドレスバーに直接「http://xxx.xxx.xxx.xxx/cgi-bin/test.cgi?NAME=abc」とすると正常にアクセスできます。 ドキュメントルート配下にあるindex.htmlからドキュメントルート外にあるCGIのディレクトリ(ScriptAlias /cgi/bin/ "/var/www/cgi-bin/")を参照するにはどのようにしたらよいのでしょうか? ----------index.html---------------- <HTML> <HEAD><TITLE>フォーム</TITLE></HEAD> <BODY> <FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前 <INPUT TYPE="TEXT" NAME="NAME"><BR> <INPUT TYPE="SUBMIT" VALUE="送信"> </FORM> </BODY> </HTML> ----------index.html---------------- ----------test.cgi------------------ #!/usr/bin/perl $str = $ENV{"QUERY_STRING"}; print << "EOF"; Content-type: text/html <HTML> <HEAD><TITLE>TESTCGI</TITLE></HEAD> <BODY>$str</BODY> </HTML> EOF ----------test.cgi------------------

    • ベストアンサー
    • CGI