※ ChatGPTを利用し、要約された質問です(原文:phpのディレクトリーorファイルのパーミッション)
phpのディレクトリーorファイルのパーミッションについて
このQ&Aのポイント
phpでログファイルを書き込む方法について教えてください。ファイルが作成されず、パーミッションの設定が間違っている可能性があります。
指定のパスに日付付きのログファイルを作成し、テキストを書き込みたいのですが、うまくいきません。ディレクトリーとファイルのパーミッションを変更しても、ファイルが作成されません。
現在、phpでログファイルの作成を試していますが、ファイルの作成ができません。ディレクトリーのパーミッションが正しく設定されていない可能性があるので、教えていただけますか?
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は、、、わかりません。
いろいろ、サンプルを試しているのですが、うまくいかなくて。。。
すみません、ご指導よろしくお願いいたします。
お礼
superside0さん ありがとうございます。 いろいろやってるうちにゴチャゴチャになってしまったのかもしれません。 でも、どこがおかしいか わからない。。。 今日は(はがゆいんですが)linux環境が使えないので、明日やってみます! また何かありましたら、質問させていただきます! よろしくお願いいたします。
補足
superside0さん、 確認してみました。 まさにその通りでした。 助かりました&ありがとうございました!