How do I upload a file to another folder that's outside of my project directory

April 24, 2017 8.2k views
PHP FAQ Ubuntu 16.04 Block Storage Storage

So basically I recently setup a Block Storage volume in which I can upload static files to host for users.

My web app assets are currently sitting residing in /var/www/<project_name>/assets/img/user-images/, but I’d like to now upload all new assets to where I setup my Block Storage which is /mnt/assets/images/<all_files_comes_here.jpg>.

I can’t seem to do this in PHP using the move_uploaded_files function.

Also, would I require any file permissions setup in order for me to upload files to my Block Storage folder?

Please advise.
Thank you.

  • You need to make sure that your web user can write to /mnt/assets/images, if you use apache your web user is called www-data and you can change permission like this sudo chown www-data:www-data /mnt/assets/images.

  • I use nginx @Mohsen47 , but yes I have changed the permissions to www-data. My only concerns are whether PHP will recognise such directories with a child directory inside root /mnt/assets/images.

  • I recomend using rsync protocol on linux ubuntu.

2 Answers

Hi @jeimanjeya

You need to either change the mount point, create a symlink or change root path in Nginx.
But since you need PHP to be able to play nice, it might be possible to use the last option, since you code is going to be a different place than the images.
To change the mount point, you need to modify fstab.
To symlink: ln -s /mnt/assets/images /var/www/<project_name>/assets/img/user-images

  • Symlink is the best solution, you are right.

  • I see Ok. So if I were to use a symlink, and if by accident I delete my main project folder, will the reference to those assets still be in /mnt/assets/images ? @hansen

    • @jeimanjeya Well, that depends on how you delete - if you follow symlinks, it will delete the files in your block storage as well.
      Make sure you have backups - nothing else will protect you against accidents.

I have created symlink and also set all the permission still its not working for me. Kindly help me to do this.

Have another answer? Share your knowledge.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!