人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpの初歩的な質問です。

$filepath = "./test.dat";

$fh=fopen($filepath,"w");
fwrite($fh,"hello");
fclose($fh);
print "ファイルの書込完了";

としていますがファイルにhelloが書き込まれません。
php及びtest.dat自体のパーミッションは777にしております。
ファイルの更新日時は変更されているのでファイルに対してのアクションはあるようですが書き込まれない原因を教えていただけると助かります。恐らく初歩的な見落としをしているんだと思いますが。

●質問者: quocard
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:777 dat Hello PHP print
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● RON
●23ポイント

fclose の前にflush()してみては?

http://php.hushlog.com/2008/06/flush.php

◎質問者からの返答

ありがとうございます。

下記で試してみました。

$fh=fopen($filepath,"a");

fwrite($fh,"hello");

flush();

fclose($fh);

としても出力には何も変化がありませんでした。

ここに書いたものを適当なレンタルサーバーに入れたら正常にファイルに出力はされていました。

何かコード以外の差が影響しているようですが何が影響しているのかがまだ特定出来ておりません。


2 ● lucia123
●23ポイント

PHPエラーは発生していませんか?

そのスクリプトの先頭で、

ini_set("display_errors", "On");

と書いてみると、普段抑止されているエラーメッセージも表示されるかもしれません。

http://manual.xwd.jp/function.ini-set.html

出力ファイルのパスを、フルパスで書いてみる

/tmp/test.dat

ファイルオープンで失敗しているかどうか確認する

if( ! $fh = fopen($filepath, "a")){

echo "ファイルオープンエラー?n";

}


3 ● gekikawa
●22ポイント

パーミッションが777とされていらっしゃるので共有レンタルサーバ

ではない環境ですよね?


http://php.net/manual/ja/function.fwrite.php

fwrite()をお使いなので、上記マニュアルによるとWindows環境ならば

$fh=fopen($filepath,"wb");

とバイナリ指定をする必要があります。


Linux環境だと...ちょっと原因が想像できません。


私だったらfwrite()ではなくfputs()を使うかな?と思いました。

◎質問者からの返答

環境依存があったのでfwriteとしてましたがfputsでもいいかもしれないです。

どうやら環境に問題がありそうですが、今後はfputsを使う形でいきたいと思います。


4 ● humiya_r
●22ポイント

$filepath = "./test.dat";

if(@touch($filepath)){

//ここでエラーがでたら設置しているディレクトリの書き込み権限がない @chmod('./',0777);

}else{

echo 'ファイルの作成に失敗しました';

}

if(@chmod($filepath,0666)){

//ここでエラーがでたらPHPがセーフモードとかで動いてるとか基本的なアクセス権がない可能性があります

}else{

echo 'アクセス権の変更に失敗しました';

}

if(@file_put_contents($filepath,"hello")){ //実際に書き込む

echo 'ファイルの書込完了;

}else{

echo '書き込みに失敗しました';

}

じゃダメ?

fopenってもう使いませんよ・・・

http://php.s3.to/man/function.file-put-contents.html

◎質問者からの返答

PHPのバージョンを気にしなくていいなら私もfile_put_contents使いたいんですがそうもいかないことも多くて。

ちょっとこちらで試してみます。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ