phpの写真のアップロードについて質問です。
<結果>
Warning: move_uploaded_file(files/20250720074735-test.jpg): failed to open stream: 許可がありません in /opt/lampp/htdocs/4sho/photoalbum.php on line 27
Warning: move_uploaded_file(): Unable to move '/opt/lampp/temp/phpf6y28w' to 'files/20250720074735-test.jpg' in /opt/lampp/htdocs/4sho/photoalbum.php on line 27
<?php
header("Content-Type: text/html; charset=UTF-8");
//--------------------------------------------------------------
// フォトアルバム
//--------------------------------------------------------------
// 変数の初期化
$updir = "files/";
$savefile = "photoalbum.txt";
$log = array();
// ログファイルの読み込み
if (file_exists($savefile)) { $log = file( $savefile ); }
// ファイルがアップロードされたか?
if (is_uploaded_file($_FILES['photo']['tmp_name'])) {
// アップロードされたファイルのパラメータを得る
$tmp = $_FILES['photo']['tmp_name'];
$name = $_FILES['photo']['name'];
// 保存するファイル名を決める
$head = date("YmdHis"); // 重複しないように日付をヘッダにする
$fname = $updir.$head."-".urlencode(basename($name));
// 一行メモを保存するための処理
$memo = $_POST['memo'];
$memo = str_replace("\r", "", $memo);
$memo = str_replace("\n", "", $memo);
$memo = str_replace("\t", "", $memo);
// 一時領域から指定フォルダへファイルを移動する
if (move_uploaded_file($tmp, $fname)) {
$date = date("Y-m-d H:i:s");
$newlog = "{$date}\t{$fname}\t{$memo}\n";
array_unshift($log, $newlog);
file_put_contents($savefile, $log); //ファイルへ保存
}
}
// ログの内容をHTMLに変換する
$html = "";
foreach ($log as $line) {
list($date, $fname, $memo) = split("\t", $line);
$body = htmlspecialchars($body);
$html .= "<hr/><h3>$memo($date)</h3><p><img src='$fname'/></p>";
}
// 以下 HTMLの表示
?>
<html><body><h1>フォトアルバム</h1>
<?php echo $html; ?><hr/>
<!-- 画像の投稿フォーム -->
<form enctype="multipart/form-data" method="POST">
画像ファイル: <input name="photo" type="file" /><br/>
メモ:<input type="text" name="memo" size="30"/><br/>
<input type="submit" value="アップロード" />
</form>
</body></html>
よろしくお願いします。