11 件のコメントがあります。

スパムブロック機能により、投稿が失敗することがあります。
うまくいかない場合は、一行目だけをまず投稿し、そのあと編集から残りを追記してみてください。

1 - 11 / 11

» Usersディレクトリ内でCGIを使う

Re: Usersディレクトリ内でCGIを使う

From : morio @ 2007-06-19 21:28:53 編集 引用

こんばんわ

質問なんですが

/Library/Webserver/DocumentsでCGIを使いたいんですが

こちらのページにユーザーの方のCGIのやりかたがのってたんですが

/Library/Webserver/DocumentsでCGIを使うやりかたはしりませんか?

いろいろ調べるんですが /Library/Webserver/Documents cgi 使い方
などと調べてみてもなかなかでづ

もし知っていたら教えてくださいお願いします!

Re: パーソナルWeb共有をhttps接続できるようにしよう

From : namahage @ 2007-06-20 22:02:05 編集 引用

どうもこんにちは。

Mac OS Xの場合、通常、CGIは/Library/WebServer/CGI-Executablesに配置することで実行することができるようになっています。このディレクトリに置くと、

http://アドレス/cgi-bin/

というアドレスでスクリプトを実行できます。つまり/Library/WebServer/Documentsにcgi-binというフォルダを作ったのと同じ動作をしています。これについては以下のページを参考にしてみてください。

MacOSX (Panther)でCGI
http://earlybirds.ddo.jp/namahage/inegalog/article.php?id=3

もし、どうしても/Library/WebServer/CGI-Executablesではなく、Library/WebServer/DocumentsでCGIを実行したい場合は、/etc/httpd/httpd.confを編集することになるとおもいます。ちょっと私も実際に設定してみたわけではないので、ここから先は憶測になってしまいますが、参考にしてみてください。

ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"
#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

httpd.confを開くと、上記のような部分があると思います。ここを編集していきます。

まず一番上、ScriptAliasから始まる行の頭に#をつけます。これでこの行は読み込まれなくなります。

次に、

<Directory "/Library/WebServer/CGI-Executables">

の行を

<Directory "/Library/WebServer/Documents">

に変更します。あとはhttpd.confを保存し、/etc/に戻した後、パーソナルウェブ共有を再起動すれば、設定が有効になると思います。

それから、実のところ私はあまり詳しくはないので、これもまた想像でしかないのですが、おそらく初期設定で、/Library/WebServer/Documentsではなく、/Library/WebServer/CGI-Executableで実行されるように、わざわざわけてられているのは意味があるように思います。
CGIスクリプトの持つ実行権限から予測される不安要素に対して、すこしでもセキュリティを高める、そんなねらいがあるのかもしれません。

それではがんばってみてください。

Re: Usersディレクトリ内でCGIを使う

From : morio @ 2007-06-21 17:17:19 編集 引用

ありがとうございます!
できてました!
/Library/WebServer/CGI-Executableってなんだろうと思ってて
いろいろ調べてみたら けっこうでてました
すみません

それとなんですがMySQLをインストールしてみたんですが
runningってなっているだけです
MySQLとは って調べてみても凄い簡単に説明されてて意味わかんないんですが

MySQLってのはウインドウやボタンなどがでて新規にデータを作るなどというアプリーケーションなんでしょうか?
それともhttp:mysqlなんたらかんとらってアクセスして使うんでしょうか?
起動していてもただruningってなってるだけでよくわかりません

どうか詳しく教えてくださいお願いします!

Re: Usersディレクトリ内でCGIを使う

From : namahage @ 2007-06-21 21:55:49 編集 引用

どうもこんにちは。
CGIのほう、目標通りに使えるようになったみたいでよかったです。
CGIはいろいろと試すと面白いスクリプトがありますので、しばらく楽しめますね。

さて、MySQLについてです。
MySQLはデータベースソフトウェアです。
データベースソフトウェアを使ったことはありますか?

世の中にはいろいろなデータベースソフトウェアがありますが、よく耳にするものですと、Microsoft AccessやFileMaker Proなどがあるかと思います。

どういうときに使用するのか、もう少し具体的に書きますと、身の回りで見かけるものでは住所録、図書館の書籍検索などでしょうか。

名前や住所、年齢などのようなある一定の形式をひとかたまりにしてたくさん保管、管理、呼び出しなどをしていく...そんな説明でいいのかよくわかりません。

MySQLはそうしたデータベースソフトウェアの一種です。
MySQLを利用するブログエンジンやネットショップのプログラムなどで、日記の内容を保存しておいたり、商品の数や値段、お客さん情報などを管理してくれたりしてくれます。もうすこし具体的なたとえ話はここをよんでみてください。

http://earlybirds.ddo.jp/namahage/inegalog/forum/topic.php?tid=11

MySQLは上記であげたAccessやFileMakerProなどとは違い、インストールしただけでは、マウスやウィンドウから利用できるようになるものではありません。

コマンドラインという、文字の命令文をかちゃかちゃと入力することで利用するものです。なれないとなかなか取っつきにくい操作です。

なので、この操作が苦手という人向けに、Safariなどのブラウザから、データベスを管理できるようにしてくれるソフトウェアがいくつかあります。ここのサイトで紹介しているのはphpMyAdminというソフトウェアです。

Mac OS XにphpMyAdminをインストールしよう
http://earlybirds.ddo.jp/namahage/inegalog/article.php?id=10

インストールはこのページの内容を参考にしてみてください。
インストールと設定が正しくできますと、

http://アドレス/phpmyadmin/

などのようなアドレスにアクセスすることで、MySQLを管理することができるようになるはずです。

よくわからないという場合は、ここのサイトで配布しているDB_SABA_StartPackあたりをインストールすれば、MySQLとphpMyAdminが使えるようになる、かもしれません。(動作確認があまりとれていないので、すみませんが、Own your riskでおねがいします)

それではがんばってみてください。

Re: Usersディレクトリ内でCGIを使う

From : morio @ 2007-06-22 00:04:10 編集 引用

ホーーー
凄い参考になります
最近自宅サーバを立てたんですが
参考になるページがなく Tigerで使えてすごいし
PHPとかCGIとかの情報がのってて凄すぎです
ここが一番くわしくのっててありえないほど凄いです

ほとんど webにあるのは情報が古いやつがおおいですよね

MySQLの意味はだいたいわかりましたが
OSXのスポットライトもデータベースみたいなものですか?
検索するといろいろファイルがでるんですが

あとPHPMydmainもためしましたよ!

古くはなっていましたが コメント部分を参考にしたりして
やっとアクセスできるようになりました
アクセスは不正ですでちょっとてこずりましたけどPHPMydmainってやつです

ちなみに気に入ったのでリンクに入れさせてもらいます!

ちなみにうちのHPはここです
http://macdog.selfip.org/
自宅サーバなので落ちてる時もあるかもしれませんがよかったら見てください!

毎日、参考にしてるので更新がんばってください!
ここを参考にできて スムーズにPHPの学習など行えてうれしい限りです
本当ありがとうございます!

ファイルへの書き込み

From : yoshi @ 2007-06-27 15:13:30 編集 引用

はじめまして。
いろいろ、いつも参考にさせていただいています。

質問なんですが、
アクセスログを作っています。
そこで、ファイルへの書き込みがうまく行きません。
実際にサーバー(インターネット上)へアップすると書き込みはできています。

ローカルでは書き込みはできないのでしょうか?

==============CGI===================
#!/usr/bin/perl

##ログファイル
$logfile= './m/log/access.log';

##日時の取得
$tm = time;
($sec, $min, $hour, $mday, $mon, $year) = localtime $tm;
$year +=1900;
++ $mon;

$ac_log="$year$mon$mday$hour$min$sec";

##ログファイル書き込み
open (OUTPUT, ">>$logfile");
eval{flock(OUTPUT, 2)};
seek(OUTPUT, 0, 2);
print OUTPUT $ac_log;
close (OUTPUT);

==============CGI===================

使用環境
Mac OSX Tiger

お手数をおかけしますが、ご教授いただければ幸いです。
よろしくお願いします。

Re: ファイルへの書き込み

From : namahage @ 2007-06-27 22:09:00 編集 引用

どうもこんにちは。
べつのyoshiさんですね。どうもはじめまして。

Mac OS XはベーシックなUNIXサーバーと変わらないため、ローカル上でCGIを実行し、ファイルを出力、書き込みなどを行うことが可能です。CGIをいじるには楽しい環境だと思います。

ただ、プロバイダさんの領域では動作して、Mac OS X上ではうまくいかないこともあると思います。この辺の違いはちょっとじっくりと見たことがないのでよくわかりません。

とりあえず、ご質問いただいたCGIについて、手元のMac(Tiger10.4.10)でテストしてみました。なお以下で作成した2つのファイルはいずれも改行コードをLF、UTF-8になっています。

1, 上記をtest.cgiとして/Library/WebServer/CGI-Excutablesに設置
2, /Library/WebServer/CGI-Excutables内にmフォルダ作成
3, mフォルダ内にlogフォルダ作成
4, logフォルダ内にaccess.logファイルを作成
5, mフォルダおよび内包されるフォルダ、ファイル類にとりあえずパーミッション777を設定

さて、この状態で、

http://127.0.0.1/cgi-bin/test.cgi

をブラウザから呼び出しますと、

「Internal Server Error」

となり、またコンソール上には

「Premature end of script headers: /Library/WebServer/CGI-Executables/test.cgi」

と出力され、CGIの実行に失敗したように見えます。
が、実際にはブラウザへの表示が失敗しているだけで、access.logの出力は成功しています。直接access.logが配置されるフォルダを開いてみると、更新され、アクセス日時が記録されているはずです。とりあえず、書き出しに失敗しているように見てしまう混乱を避けるため、いまだけ以下のように追記してみました。

#! /usr/bin/perl --

##ログファイル
$logfile= './m/log/access.log';

##日時の取得
$tm = time;
($sec, $min, $hour, $mday, $mon, $year) = localtime $tm;
$year +=1900;
++ $mon;

$ac_log="$year$mon$mday$hour$min$sec";

##ログファイル書き込み
open (OUTPUT, ">>$logfile");
eval{flock(OUTPUT, 2)};
seek(OUTPUT, 0, 2);
print OUTPUT $ac_log;
close (OUTPUT);

##ブラウザに出力
print "Content-type:text/html\n\n";
print '<html><body>Output Complete!!<br>';
print "$ac_log";
print '</html></body>';

exit;

これで、きれいに動いてくれているようです。

yoshiさんはmフォルダ、logフォルダ、access.logファイルにどういうパーミッションを設定していますか?これらのパーミッションを一度確認してみてください。
777などに設定されていても、Finderから設定した場合と、FTP用ソフトウェアで設定した場合では、反映に妙なことが起きたりすることもありました。(ただのタイムラグかもしれませんが)

それではがんばってみてください。

Re: Usersディレクトリ内でCGIを使う

From : yoshi @ 2007-06-27 23:55:35 編集 引用

初めましてです。
早速の回答ありがとうございました。

できました。
原因はパーミッションでした。644にしていました。
パーミッションの設定がいまいちわかりません(笑)。。
インターネット上でも777がいいのでしょうか?

それと、cgiファイルを開いてると、アクセスしてもエラーになりますね。

いろいろまたご教授ください。
ありがとうございました。

Re: Usersディレクトリ内でCGIを使う

From : namahage @ 2007-06-28 21:21:13 編集 引用

うまくいってよかったですね。
なにしろ私は東北弁以外の言語の理解はさっぱりなものでして...。
すこしでもお役に立てたようでほっとしました。

パーミッションはとりあえず動作を確認するだけであれば、777からスタートして、徐々に厳しくしながらテストしていけばよいと思います。777は設定として最弱の状態ですので、使用しないように工夫をしたほうがよいです。

実行可能なプログラムに対して、余計なアクセス権を用意しておくことは、不安要素を増やすことになります。たとえば実行ファイルには705、logや掲示板データなどのファイルには606、よくある日本語文字コード変換ライブラリのjcode.plなどには604のように設定できれば、そこそこすっきりするかと思います。

パーミッションについてよくわかるページはここが良かったです。
技林
http://tech.bayashi.net/pdmemo/permission.html

また、パーミッションの設定許容度はCGIを設置するサーバーによって微妙に変わってくると思います。そもそも777のようにフルアクセスの設定を許可していない場合もありますし、606等のような設定ではうまく動いてくれないときもあるようです。

それではがんばってみてください。

Re: Usersディレクトリ内でCGIを使う

From : maseki @ 2008-05-23 01:40:53 編集 引用

こんばんは。

初歩的な質問で恐縮なんですが、etcというフォルダが存在しないと表示されてしまったんですが何が原因でどうすれば良いのでしょうか?

Macはまだまだ初心者なのですみません。

Re: Usersディレクトリ内でCGIを使う

From : namahage @ 2008-05-24 00:25:15 編集 引用

どうもこんにちは。

ひょっとしてつかっているOSは10.5ですか?
Mac OS Xは10.5でとても大きく変わりまして、このログにかかれている内容とちょっと変わってしまっています。

masekiさんがおそらく出会ったエラーは

/etc/httpd/users

を実行しようとしたときだと思います。
Mac OS X10.5ではここがちょっと変わってしまっていまして、

/etc/apache2/users

で開くことができます。
この後の操作は同じですので、安心だと思います。

Post Your Comment


*は入力必須です。E-Mailは公開されません。