- 締切済み
パーミッションの3桁目を6にせずにファイルを作る
$fp = fopen( "a.html", "w" ); fputs( $fp,$buffer); fclose( $fp); (一部省略) このようなプログラムで、すでにあるa.htmlの内容を少し変化させて新しいa.htmlページを作っていきたいのですが、サーバーで試したところ、パーミッションに関するエラーが出ました。 644だったパーミッションの3桁目を6(646など)にするとファイルを作ることができました。 しかし、3桁目を6にするとセキュリティ上危険だそうで、そうしたくありません。 3桁目を6にせずにファイルを作る良いアイデアはありませんでしょうか? htmlを自動生成している人はパーミッションの3桁目を6にしているのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- elf2000
- ベストアンサー率50% (6/12)
- moon_night
- ベストアンサー率32% (598/1831)
関連するQ&A
- ファイルを開いたままオープンモードを変更したい
$fp = fopen ($file, "r"); flock ($fp, 2); で開いたファイルをロックを解除しないままファイルを空にして書き込みモードに移行する方法を教えてください。 或いは $fp = fopen ($file, "r+"); flock ($fp, 2); からfputs()で書き込んだ後にファイルのファイルポインタ以降の部分を切り捨てる形でも良いです。 flock ($fp, 2);の後にfgetsによりファイル内容を取得した後ファイルロックをしたままファイルの余計な部分を捨てたいので $fp = fopen ($file, "w"); flock ($fp, 2); や $fp = fopen ($file, "r"); flock ($fp, 2); fgets ($fp); flock ($fp, 3); fclose ($fp); $fp = fopen ($file, "w"); flock ($fp, 2); は必要ありません。
- ベストアンサー
- PHP
- 配列をファイルに書き込む方法
下記($dataに入ってる)配列をファイルに書き込みたいのですが、書き込み方法が分かりません、教えていただけませんでしょうか・・・。 $dataの中身は Array ( [0] => あいうえお [1] => かきくけこ [2] => さしすせそ [3] => たちつてと ) これを $fp=fopen("1.txt","w"); fputs($fp,$data); fclose($fp); にするとArrayとだけ表示されます。 あいうえお\n かきくけこ\n さしすせそ\n たちつてと\n と書き込みたいのですが・・・、お願いします。
- ベストアンサー
- PHP
- fscanf()
fcanf()がうまくいきません。 画面には、42640888のような数値が表示されます。 どこが間違ってるか教えてください。 (test.txtに23と書いてあるとします。) #include<stdio.h> int main(void) { FILE *fp; FILE *fp1; char str[10]; int a; fp=fopen("test.txt","r") fp1=fopen("a.txt","w") while(!feof(fp)){ fgets(str,8,fp); fputs(str,fp1); } fscanf(fp,"%d",&a); printf("%d",a); fclose(fp); fclose(fp1); return 0; }
- ベストアンサー
- C・C++・C#
- ファイルへの書き込みについて
test.phpというスクリプトを作成しています。 ファイルを指定して指定文字列"ABCD"を書き込むという処理です。 =========================== $MOJIRETU="ABCD" $fp=fopen("./TEST/TEST.html", "w"); fputs($fp,$MOJIRETU); fclose($fp); =========================== という処理です。 ですが、どうしてもファイルが作成されません。 実際に書き込むファイルは存在しませんが、 マニュアルを見るとfopenはファイルが未存在の 時は作成すると書いてありました。 権限(?)の問題かと思い、test.phpを'777'に変更しましたが 作成されませんでした。 どのような問題が推測されるでしょうか? 宜しくお願いいたします。
- ベストアンサー
- PHP
- C言語でファイルを出力
ファイルの中に変数をいれて複数のファイルをつくろうとしたのですが、 できたファイルの後に?マークがついてきます。 file = fopen("filename.txt", "w"); for(j=0; j<30; j++){ fprintf(file ,"%d.dat\n",j ); } fclose(file); file2 = fopen("filename.txt", "r"); として、ファイル名を書いたファイルをつくってから、 for(k=0; k<30; k++){ fgets(fp,sizeof(fp),file2); file_out = fopen(fp,"w"); 省略 fprintf(file_out, %e %e \n",a ,b); fclose(file_out); } fclose(file2); をして、30個のファイルを出力すると、 0.dat? 1.dat? 2.dat? . . . 29.dat? というファイルができてしまいます。 ファイルの中はしっかりできています。 なにか解決法を知っている方がおりましたら、どうか教えて下さい。
- 締切済み
- C・C++・C#
- flockについて
PHPを始めようと思っていきなりつまずいています。 flockについてなんですが <?php $fp = fopen("ファイル名","a"); flock($fp,LOCK_EX); fputs($fp,"aaa"); flock($fp,LOCK_UN); fclose($fp); ?> は正しいですが $fp = fopen("ファイル名","w") とかにしてしまうとファイルロックの意味がありませんよね (ロックする前にファイルを丸めてしまってて、このプロセスの後readすると実際と異なる値を読んでしまうから) で、この場合 (つまり"w"や"w+"をファイルオープンの引数にとってflockするとき) fopen の前に、ロックを示すためのディレクトリを作成しておいて、書き込んだ後にディレクトリを削除する、というような独自の仕組みを作る必要があると思うんですが、具体的にどういうソースになるか教えてください
- ベストアンサー
- PHP
- ファイルへの書き込み
フォームに入力されたデータをCSVファイルに書き込みたいのですが、以下のようにすると追加で書き込みはできるのですが、ずっと改行されずに1行に書き込まれてしまうので、新しいデータを入れる際に改行されるようにしたいのですが、どのようにすればいいでしょうか? $fp = fopen(TEST_FILE,"a") or die("ファイルを開けません\n"); flock($fp, LOCK_EX); fputs($fp, "aaa")."\n"; flock($fp, LOCK_UN); fclose($fp);
- ベストアンサー
- PHP
- ファイルの内容の削除【ファイルシステム関数】
以下のユーザー定義関数で、POSTで受け取った数値の増減をあるファイルに書き換える作業をおこないたいのですが、1桁の数値であれば問題ないのですが、2桁の数値にし、マイナスの数値で減らすと値が「00」となってしまいます。文字列として認識してしまっているためかとは存じますが、良い解決方法が思い浮かびません。以下ソースです。 <? function cnt($str){ if(isset($_POST[$str])){ $fp = fopen( $str.".txt", "r+" ); flock($fp,2); $count = fgets( $fp, 5 ); $strstr = $_POST["$str"]; $count+= $strstr; rewind( $fp ); fputs( $fp, $count ); flock($fp,3); fclose( $fp ); print($count); }else{ $fp = fopen( $str.".txt", "r" ); $count = fgets( $fp, 5 ); print($count); };} ?> ファイルシステム関数については苦手で、うまく理解しきれていません。 アイデア・解決法をご存知の方がいらっしゃいましたら、ご回答いただければうれしいです。よろしくお願いいたします。
- ベストアンサー
- PHP
お礼
お礼が遅くなってすみません。m( _ _ )m 私には難しすぎました。 ご回答ありがとうございました。