- ベストアンサー
助けてください
サーバーにフリーのPHPをアップしたところ、以下のようなメッセージが出てきて正常に動作しません。 発行元に問い合わせていますが、どうも返事が遅くなりそうなので、もしよろしければ解決の糸口を教えていただければと思い、投稿しました。 ------------------------------------------------ Warning: flock() expects parameter 1 to be resource, boolean given in /virtual/hpbuilder/public_html/mydic.php on line 131 Warning: fputs(): supplied argument is not a valid stream resource in /virtual/hpbuilder/public_html/mydic.php on line 133 Warning: flock() expects parameter 1 to be resource, boolean given in /virtual/hpbuilder/public_html/mydic.php on line 135 Warning: fclose(): supplied argument is not a valid stream resource in /virtual/hpbuilder/public_html/mydic.php on line 137 ------------------------------------------------ パーミッションの問題なのでしょうか。よろしくお願いします
- みんなの回答 (8)
- 専門家の回答
補足
返信ありがとうございます ソースは下記のようになっているんですが… //書き込み場合 if(isset($_GET['write'])&&!isset($_GET['delete'])){ $get_w_pass=$_GET['write']; //パスワードが正確 if( $get_w_pass==$pass ){ $w_script=$script_php."?write=".$get_w_pass; if ($_SERVER["REQUEST_METHOD"]=="POST"){ if(!$_POST['id']==""){ $idflag=1; //改行コード\nは<br>に変換しておく $getid=str_replace( "\n",'<br>',$_POST['id']); } else{ $idflag=0; $msg="名称が入力されていません!<br>\n<a href=\" javascript:history.back() \">戻る</a>"; } if(!$_POST['data']==""){ $dataflag=1; $getdat0=htmlspecialchars( $_POST['data'] ,ENT_QUOTES ); $getdata=str_replace( "\n",'<br>',$getdat0 ); } else{ $dataflag=0; $msg="名称が入力されていません!<br>\n<a href=\" javascript:history.back() \">戻る</a>"; } if($idflag&&$dataflag){ //配列を作成 $conl_new = "$getid|:$getdata\n"; //ディレクトリが存在していない場合は作成 if(!@opendir($DicDB)){ mkdir ("$DicDB", 0777); } //データベースが存在しているか調べる if(!file_exists($url)) { //存在していなけれな作成する $fp = @fopen($url,"w"); //ファイルの破損を防ぐ為、一時ロックする flock($fp,LOCK_EX); //書込み fputs($fp, $conl_new); //ロック解除 flock($fp,LOCK_UN); //ファイルを閉じる fclose($fp); //データベースの属性を変更 chmod ("$url", 0777); //※このときに親dirの属性がデフォルトに変更されてしまうのでまた変更 chmod ("$DicDB", 0777); $prinmsg="以上をデータベースに追加しました"; } else{ //ファイルデータを配列に入れておく $conl = file($url); $w_flag=0; //配列の数まで処理を繰り返す for($i=0; $i<count($conl); $i++){ //$tempデータを"|:"で分けてそれぞれに代入 list($tempid,$tempdata)=explode("|:",$conl[$i]); if($tempid==$getid){ $prinmsg="その名称は既にデータベースに存在しています!書き込み不可!"; $w_flag=1; break; } } if(!$w_flag){ //ファイルを開く $fp = @fopen($url,"a+"); //ファイルの破損を防ぐ為、一時ロックする flock($fp,LOCK_EX); //書込み fputs($fp, $conl_new); //ロック解除 flock($fp,LOCK_UN); //ファイルを閉じる fclose($fp); $prinmsg="以上をデータベースに追加しました"; } }