質問: ### 前提・実現したいこと PHPで、DB(phpMyAdmin)に商品の追加、削除、更新ができるサンプルプログラムを作っています。 商品追加画面で、「商品名」「価格」『商品画像』を入力し、登録します。 ファイル選択から『商品画像』の選択をし、別の画像フォルダへの移動を行う際に、エラーが出てしまいます。 ### 発生している問題・エラーメッセージ move_uploaded_file()で、選択された画像を、画像をフォルダへ移動していますが、下記のエラーが出てしまいます。 <エラーメッセージ> /Applications/XAMPP/xamppfiles/temp/phpNSoPUG Warning: move_uploaded_file(./gazou/aspara.jpg): failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/product/pro_add_check.php on line 55 Warning: move_uploaded_file(): Unable to move '/Applications/XAMPP/xamppfiles/temp/phpNSoPUG' to './gazou/aspara.jpg' in /Applications/XAMPP/xamppfiles/htdocs/product/pro_add_check.php on line 55 ・エラー指摘されている行 55:move_uploaded_file($pro_gazou['tmp_name'],'./gazou/'.$pro_gazou['name']); ### 該当のソースコード pro_add.php ``` 商品追加 商品名を入力してください。 価格を入力してください。 画像を選んでください。 ``` pro_add_check.php ``` '; } else { print'商品名:'; print $pro_name; print ''; } if($pro_price=='') { print'価格が入力されていません。'; } if(preg_match('/^[0-9]+$/',$pro_price)==0){ print '価格をきちんと入力してください。'; } else { print'価格:'; print $pro_price; print ''; } if($pro_gazou['size'] > 0) { if($pro_gazou['size'] > 1000000){ print '画像が大きすぎます。'; } else{ print $pro_gazou['tmp_name']; move_uploaded_file($pro_gazou['tmp_name'],'./gazou/'.$pro_gazou['name']); print''; print ''; } } ``` ### 試したこと エラーが出ている55行目の直前に、print $pro_gazou['tmp_name'];で読み込み元のファイルパスを表示しました。 /Applications/XAMPP/xamppfiles/temp/phpHaJuZI 上のパスは、環境により変動するとのことで、このパスが原因ではないと思いますが。 if ($_FILES['gazou']['error'] !== UPLOAD_ERR_OK)で、移動する前の画像のアップロード結果を確認していますが、問題なくアップロードされています。
回答: `pro_add_check.php`と同じ階層に`gazou`というディレクトリがないからでは。