WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:CGIでのフォルダ作成

0:[投稿] kousei [2004/03/19 09:59 ][環境:IE6 RedHatLinux Apache ]

社内サーバーにてCGIも稼動しているのですが、フォルダの作成関数がうまく機能しません(mkdir関数)。ロック式の掲示板等に使うと必ずエラーとなり、フォルダが作成できません。フォルダ作成のリトライ回数も5回としていますが、それでもダメです。ファイルの読み書き等は正常に働きます。
以前はきちんと動いてたのですが...。

皆様のご教授をお願い致します。



1:[回答] kak [2004/03/19 12:04 ]

ども。

可能な限りソースを提示してください。
ただ、ディレクトリが作成できませんでは分かりませんから。

>以前はきちんと動いてたのですが...。

とは同じPGの話しですか?


2:[回答] kousei [2004/03/19 17:29 ]

######### ソース内容 ###############

#!/usr/bin/perl

$folder = "./fold/";

$try = 5;

while(!mkdir($folder, 0755)){
    
if(--$try <= 0){&error("失敗…");}
sleep(1);    
    
}

$flag = 1;

if($flag){
    
print "Content-type:text/html\n\n";
print << "EOF";

<html>
<head>
<title></title>
</head>
<body>
フォルダ成功!!
</body>
</html>

EOF

exit;
        
#################################

単にディレクトリを作成するだけのスクリプトです。
これでダメでした。KENTさんのスクリプトも試した
のですが、全くダメです。やはり、社内のサーバーの方
に原因があるのでしょうか?ディレクトリ作成関数を外
したスクリプトは正常に動作します。

宜しくご教授お願いします!!


3:[質問] kousei [2004/03/19 17:32 ]

申し訳ありません!上記スクリプトにエラー表示用のサブルーチン
が抜けていました。でも、これで全くダメなんです。

#!/usr/bin/perl

$folder = "./fold/";

$try = 5;

while(!mkdir($folder, 0755)){
    
if(--$try <= 0){&error("失敗…");}
sleep(1);    
    
}

$flag = 1;

if($flag){
    
print "Content-type:text/html\n\n";
print << "EOF";

<html>
<head>
<title></title>
</head>
<body>
フォルダ成功!!
</body>
</html>

EOF

exit;
        
}

sub error {
    
print "Content-type:text/html\n\n";
print << "EOF";

<html>
<head>
<title></title>
</head>
<body>
$_[0]
</body>
</html>

EOF

exit;
    
    
}


4:[回答] ふじ [2004/03/19 19:24 ]

> if(--$try <= 0){&error("失敗…");}
これを、
if(--$try <= 0){&error("失敗… $!");}
としてみてください。

mkdir などが失敗した場合は、$! にエラーメッセージが入っています。


5:[回答] AC [2004/03/19 20:44 ]

予想ですが、ディレクトリを作ろうとしているディレクトリにwriteパーミッションがないのではないでしょうか。

/home/user/path/dir というファイルorディレクトリを作成する場合には、 /home/user/path に write 権限がないと作成できません。


6:[回答] うにくす [2004/03/19 21:51 ]

flockを使ってみては?

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World