phpのディレクトリーorファイルのパーミッション
お世話になります。
どうやってもうまくいかないので、質問させていただきます。
phpでログファイルを書き込むようにしたいのですが、
ファイルが作成されません。
根本的なところができていないのだと思いますが、教えてください。
やりたいことは、指定のパス(docomwnt_root配下の/logまたは include/log)
にyyyymmdd.logで、テキストを書き込みたいのです。
いろいろ調べて、ディレクトリの場合は 0777、ファイルは0666にchmodすればよいとのことで
変更したのに、ファイルがないといわれてしまいます。
ソースコードは以下になります。
すみません、試行錯誤の名残とdebug行が入っています。
<?php
//function logout($content){
$content="test";
error_log($content,0);
//ログファイル設定
// $logpath = '/log';
// if( !is_dir($logpath) ){
// die("ディレクトリが存在しません -->". $logpath);
// }
//日時取得
$dateobj = new DateTime();
//アクセスタイム取得
$accessTime=$dateobj->format('Y-m-d H:i:s');
//書き込む内容
$log = $accessTime . " " . $content . "\n";
// ファイル名
$date = $dateobj->format('Ymd');
// $filename = realpath( $logpath ) . '/'.$date . '.log';
// $filename = dirname(__FILE__) . '/log/'. $date . '.log';
$filename = $date . '.log';
echo $filename;
$directory_path = "./log";
if( mkdir( $directory_path, 0777) ){
echo "ok<br>";
chmod( $directory_path, 0777);
}
else{
echo "ng<ng>";
}
if( !$fp = fopen($filename, 'ab') ){
echo "cannot open file($filename)<br>";
return -1;
}
if( !$fp = flock($fp, FILE_APPEND | LOCK_EX) ){
echo "cannot open file($filename)";
return -1;
}
if( fwrite($fp, $content) === FALSE){
echo "cannot write file($filename)<br>";
return -1;
}
if( !fclose($fp) ){
echo "cannot close file($filename)";
return -1;
}
// return 0;
//}
?>
この場合だと cannot open file になってしまいます。
windowsばかりやってきていたのでlinuxは、、、わかりません。
いろいろ、サンプルを試しているのですが、うまくいかなくて。。。
すみません、ご指導よろしくお願いいたします。
お礼
ありがとうございます。使用しているWebサーバはApache2です。 ディレクトリのオーナーを確認しようと思い、 echo get_current_user() . '<br />'; echo posix_getlogin(). '<br />'; とすると、それぞれ別々の結果が返ってきます。posix_getlogin()のほうはrootを返すのですが、get_current_user() は ftpなどで設定しているアカウントユーザー名になっています。 また、使用しているOSが FreeBSD なのですが、以下コマンドを打つとそれぞれ違う結果が返ってきます。 whoami -> www logname -> root ディレクトリのオーナーを確認する方法などありましたらどうぞよろしくお願いいたします。