Trying to upload an image in PHP, I’m receiving an error:
Warning: move_uploaded_file(../upload/ferrari_logo.jpg): Failed to open stream: Permission denied in /var/www/html/mypage.php on line 108
Warning: move_uploaded_file(): Unable to move “/tmp/php8hHG6L” to “../upload/ferrari_logo.jpg” in /var/www/html/mypage.php on line 108
I know I have to change the permission in the upload folder. I just wanted to know if I change these permissions in Docker, Ubuntu terminal or PHP.
mypage.php
<div class="photo_column">
<form method="post" id="upload_form" action="mypage.php" enctype="multipart/form-data">
<div id="about_me_photo">
<?php
$message = '';
$moved = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_FILES['photo_upload']['error'] === 0) {
$temp = $_FILES['photo_upload']['tmp_name'];
$path = '../upload/' . $_FILES['photo_upload']['name'];
$moved = move_uploaded_file($temp, $path);
}
if ($moved === true) {
echo '<img id="about_me_img" src="' . $path . '"alt="">';
} else {
echo '<img id="about_me_img" src="" alt="">';
}
} else {
echo '<img id="about_me_img" src="" alt="">';
}
?>
<div class="about_me_row">
<input type="file" id="photo_upload" name="photo_upload" accept="image/*">
<input type="submit" class="mypage_button" id="submit_photo" value="Upload">
</div>
</div>
</form>
</div>
docker-compose.yml
version: "3.9"
services:
php-apache:
ports:
- "8000:80"
build: './build/php'
volumes:
- ./app/public:/var/www/html
- ./src:/var/www/src
- ./config:/var/www/config
- ./upload:/var/www/upload
- ./img:/var/www/img
mysql:
image: mysql:latest
ports:
- "3306:3306"
build: './build/mysql'
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: "commune"
volumes:
- dbData:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
depends_on:
- mysql
restart: always
ports:
- 8080:80
volumes:
app:
src:
config:
upload:
img:
dbData: