I am using Laravel 4. My operating system is Ubuntu 13.10 and my local server is Apache. What I am trying to do is upload a file to the server under a folder. The problem is that both the folder and the file after the upload are owned by 'nobody' while I want me to be the owner and have all the permissions too. I don t want a solution such as cmod or chown on terminal cause both of them need to be executed every time I upload a file. Even if a change the owner of the folder uploads the files are not correctly uploaded.Here is my form(firstform.blade.php):
<form action="{{ url('form-handler') }}" method="POST" enctype="multipart/form-data" />
<input name="foo" /><br/>
<input name="baz" />
<br/>
<input type="file" name="book" />
<input type="submit" value="Send" />
</form>
And here is my routes:
Route::get('firstform', function()
{
return View::make('firstform');
});
Route::post('form-handler',function(){
$name = Input::file('book')->getClientOriginalName();
$path=Input::file('book')->move('uploads/', $name);
echo 'The file uploaded is : ' .$name .' and is located in ' .$path ;
});
You should change the user under which the Apache server is operating - to the same user as yours. That makes the files/folders created by Apache owned by the proper user (you) so they are accessible.
To switch the Apache user in Ubuntu you have to:
Edit the envvars file:
sudo gedit /etc/apache2/envvars
Change:
export APACHE_RUN_USER=nobody
export APACHE_RUN_GROUP=nobody
to:
#export APACHE_RUN_USER=nobody
#export APACHE_RUN_GROUP=nobody
export APACHE_RUN_USER=YOUR_USER_NAME
export APACHE_RUN_GROUP=YOUR_USER_NAME
firstly you should create root folder in which you are suppose to upload file into it change group of that root dir..
chgrp dirname groupname
and make www-data apache user member of that group then you will be able to access that file..