1

I have an upload image feature in my website. I tried it in my localhost and it was working fine. Now I hosted it, and the following error occured:

move uploaded file failed to open stream permission denied

I checked the error online and found that by changing the chmod to 777, it can be solved.

I tried the same, and it worked. Even just 713 is working fine. But giving 777 permission is not good due to hacking possibilities.

Is there a way around this? I have right now changed the chmod to 713 until I can get a better solution for the same.

I have currently hosted in Google Cloud Platform with Ubuntu 16.04 image

printfjoby
  • 78
  • 2
  • 10
  • It's the user that the web server uses (like `www-data` for apache) that needs to have read/write access to that folder. If that user is the owner, 755 should suffice. – M. Eriksson Dec 08 '17 at 13:12

1 Answers1

1

You can use 2 options.

1) you can change the owner from the upload directory to the apache user

chmod www-data:www-data your_folder

but this has some negative effects. your ssh user can edit files here just with root privileges.

2) you can create a group only for upload files and put your ssh user and the apache user into this group

sudo addgroup uploaders
sudo usermod -aG uploaders www-data
sudo usermod -aG uploaders your_user

after this change the owner of the upload folder

chmod your_user:uploaders your_folder

after this you can change the permissions to 744 or something you want

rob
  • 2,136
  • 8
  • 29
  • 37