- ベストアンサー
MacOSXでのPerlプログラミングに関するエラーとセキュリティについて
- MacOSX10.4でPerlを勉強したいと思ったのですが、初歩の初歩で躓いてしまいました。web共有を開始してhttp://localhostは表示できましたが、CGI-Executablesの中に保存したファイルにアクセスするとエラーが出てしまいました。
- ネットで情報を集めて試行錯誤しているうちにわけがわからなくなってしまったので、web共有は停止しています。しかし、http://localhostは表示できる状態です。この状況はどういうことなのでしょうか?セキュリティ上の問題はないのでしょうか?
- MacOSXでのPerlプログラミングに取り組んでいる際に、web共有の設定やファイルのパーミッションの設定がうまくいかずエラーが発生している状況です。解決策を探しているが、現時点ではweb共有は停止しており、http://localhostは表示することができる状態です。セキュリティに関しては心配しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Macのターミナルという端末(アプリケーションの中にあります)を開いて、 次のコマンドを使います。 chmod 755 <指定のファイル> 同じように chmod 777とかやります。ファイルだけではなく勿論ディレクトリ(フォルダー)にも使えます。 ターミナルに入った時点でたぶん自身のホームディレクトリにいると思うので、ホームディレクトリから見て、 chmod 755 ~/Library/WebServer/CGI-Executables とかこんな感じだと思います。 現在の場所は、 pwd というコマンドで確認できます。 注意! http://homepage.mac.com/dnagase/macosx/perlcgi.html このサイトで紹介しているディレクティブでは、xxxx.plというファイルが使えません!perlで書いたものでも、xxxx.cgiというファイル名にする必要があります!
その他の回答 (1)
- Tinte
- ベストアンサー率45% (27/60)
ローカル内でApacheサーバーを運用している状態ですと、セキュリティー的には大丈夫ですよ。言葉上では「共有」となっていますが、実際は外部とつながっていないと思うのでローカル内で共有されているだけだと思います。 たぶん権限の問題ですと、cgi-binディレクトリのパーミションが間違っているか、Apacheのhttpd.confの設定ファイル内のディレクティブが間違っているのかもしれません。 パーミッションは、ホームディレクトリが755、Sitesというディレクトリ(たぶん公開ディレクトリになっていると思います。)が同様に755ですが、cgi-binディレクトリを別にしている場合は、そのcgi-binディレクトリが755でなくてはPerlが実行されません。 httpd.confの設定では、 ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/" この部分でスクリプト(実行ファイル)のディレクトリを指定します。 次に <Directory "/Library/WebServer/CGI-Executables"> AllowOverride None Options None Order allow,deny Allow from all </Directory> の部分でどのディレクトリでCGIを実行できるか?というようなことを指定します。 localhostでアクセスできるのは、644のパーミションでも可能なので、localhostでアクセスできることは直接にはperlが実行できることと関係がありませんが、一応Webサーバーが起動しているということが確認できるだけです。その上で、以上の設定をしないとPerlは実行されません。 またPerlのファイル自体も755にしておかないと勿論動きません。 そこら辺りを見てみると見落としている部分があるかもしれないです。
お礼
回答ありがとうございます。 色んなものを見て色んなことを試したので、今がどういう状態になっているのかもよくわからなくなってしまいました。 httpd.confの設定は、http://homepage.mac.com/dnagase/macosx/perlcgi.htmlのページを参照してこの通りに書き換えました。 また、本当に初歩的な質問で申し訳ないのですが、ローカル内でパーミッションを変更するのはどうしたらいいのでしょうか? 外部のサーバーにアップする時はFTPソフト(cyberduck)を使いましたが、ローカルではどうすればいいのかさっぱりわかりません…
お礼
ありがとうございます。 パーミッションの設定は出来ました。 web共有が出来なくなっていたのも、再起動したら解決しました。 結局internal server errorとなってしまったのですが… もう少し試行錯誤してみようと思います。 何度もありがとうございました。
補足
何度も申し訳ありません。 ファイルが破損していたようで、もう一度作り直したら動きました! お約束の「hello perl!」の一文ですが、かなり感動しました。 本当にありがとうございました!