このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

unixでは動くのにMacでは動きません。なぜでしょうか?

発言者:パールらくだ
( Date Wednesday, August 06, 1997 01:57:33 )


こんにちは。今日は質問にうかがいました。

現在、MacPerl5.1.3r2とMacHTTP 2.2(v.2.03)で
cgiスクリプトの動作チェックを行っています。

unixサーバ用のスクリプトをMac用に
直したもののいくつかは問題なく作動したのですが
Matt Wrightという人の書いたWWWBoardというBBS
だけはどうにもうまく作動してくれません。
unixサーバでは問題なく動いているにも関わらずです。
WebSTAR 2.1も試しましたが結果は同じでした。

cgiとは別の書き込み用のhtmlページのフォームに
書き込んでsubmitすると以下のようなページが返ってきます。

Diagnostic Output

# Invalid argument.
File 'Hard Disk:Desktop Folder:WebSTAR 2.1:cgi-bin:WWWBoard.cgi'; Line 261

このargumentという言葉はどのような意味があるのでしょう?
またLine 261とはスクリプトの261行目を指しているのでしょうか?
教えてください。
試しに無記入でsubmitすると無記入であることを知らせるページ
を返してくるので、データを格納する際の問題のようなのです。

その他の疑問ですが、Matt WrightのWWWBoardの
スクリプトの中にはそのスクリプトが入っている
ディレクトリへの絶対システムパスを書く所があります。
例えばそのスクリプトが入っているディレクトリをdrとすると
unixサーバ版ではこんな感じです。

$basedir = "/home/username/public_html/dr";

これを私のマック上で表わすとしたらどう書けばよいのでしょうか?
$basedir = "Hard Disk:という具合に書き出すのでしょうか?
だとしたらHardとDiskの間に%20は必要なのでしょうか?

思いつくことは全て試しましたが事態は改善されませんでした。
どうかアドバイスをお願いいたします。


  

パールらくだ さんからのコメント
( Wednesday, August 06, 1997 03:52:32 )

追記です。
色々やってると以下の様なのもよく返ってきます。

Diagnostic Output

# No such file or directory.
File 'Hard Disk:Desktop Folder:Quid Pro Quo ト:WWWBoard:WWWBoard.cgi'; Line 388

ちなみにWWWBoardのスクリプトは

→  ここにあります。

元永二朗 さんからのコメント
( Thursday, August 07, 1997 00:30:32 )

>$basedir = "Hard Disk:という具合に書き出すのでしょうか?

その通りです。

>だとしたらHardとDiskの間に%20は必要なのでしょうか?

必要ありません。というより、入れたらエラーになると思います。
URL表記とMacintoshのファイルパスの表記は別のものだと考えてください。

例えば、
open(OUT,">$foo/$bar") || die $!;
は
open(OUT,">$foo:$bar") || die $!;
と書き直す必要があります。

>Diagnostic Output
>
># No such file or directory.

やはりファイルパスのどこかがおかしいようですね。

SBK さんからのコメント
( Friday, August 08, 1997 08:46:23 )

今は忙しくて中断しており、記憶が定かでなく、また
パールらくださんの困っている状況を的確につかんで
コメントしているわけではありませんが、

Mac上のPerlとUNIX上のPerlで互換的に動くソースを作るためには、
特にWWWがらみのCGIを作るときには、
 ファイルを操作する時のパス指定と、
 WWW上からのパス指定を、
ソースを書く段階で、意識的に区別していないと、
うまく動かなくなります。

UNIXだけでうごかすなら、この2つは、全て区切り記号は"/"で
すみますので、はっきり意識しないでも書けますが、
UNIXへの移植を前提にしたMacで開発する場合は、上記の問題を
意識して、"/"と":"を使い分けなければなりません。

この問題で、つかえているということではないでしょうか。

Du Yuan さんからのコメント
( Friday, August 08, 1997 15:37:44 )

私もマット君のスクリプト改造して色々あそんでます。今では(まだアップ
してないですけど)投稿記事の修正、プレビュー、最新記事一覧と、何でも
かんでも新機能をくっつけてしまい、あまりに大きくなってMacPERLでは開
けなくなってしまいました(^^;;)。これ何とかならないんですかねぇ?

上の$basedir等の問題については、面倒なんで全部削っちゃって、同
一ディレクトリにすべて格納するようにしました。これならマックもUNIX
も関係ないです(<あたりまえだ)。

→  これはもう古いやつだけど

パールらくだ さんからのコメント
( Friday, August 08, 1997 23:59:28 )

みなさま、いろいろとアドバイスをありがとうございます。
原因が分かり次第、ここで報告いたします。