I have a route that is essentially a "hook" to run an Artisan command, it accepts some get
parameters as arguments:
Route::get('hook', function()
{
$param = Input::get('param');
Artisan::call('myCommand', array('param' => $param));
}
myCommand
simply creates a directory in the root called param
and a hello.txt
file.
I can run myCommand
fine using php artisan myCommand param1
and it works as expected. I can also use Artisan's tinker
command and run Artisan::call()
perfectly fine too.
However when I try the command via visiting the URL (e.g. example.com/hook¶m=hello
), my command does not create anything as expected. If it helps as well, I'm trying this on Laravel Forge. On my local dev machine everything works fine.
Any idea what is wrong?
You can either set permissions to the folder by
what you absolutely shouldn't do, as everybody can write and execute everything in this directory afterwards
or, what I would prefer, you create a new group, let's call it usergroup:
Now that the group exists, add the two users to it:
Now all that's left is to set the permissions on the directory:
Now only members of the usergroup group can read, write, or execute files and folders within the directory. Note the
-R
argument to thechmod
andchgrp
commands: this tells them to recurse into every sub directory of the target directory and modify every file and directory available.You may also want to change 770 to something like 774 if you want others to be able to read the files, 775 if you want others to read and execute the files, etc. Group assignment changes won't take effect until the users log out and back in.
In your case, you should definately change it to 775 afterwards...
You need to set up directory permissions correctly.
sudo chown -R <YOUR_USERNAME>:www-data <THE_DIRECTORY>