设置用户权限| Artisan命令不会在代码中运行,但在命令行上运行正常

时间:2014-11-22 05:22:05

标签: php laravel laravel-4 permissions

我有一条基本上是" hook"要运行Artisan命令,它接受一些get参数作为参数:

Route::get('hook', function()
{
  $param = Input::get('param');
  Artisan::call('myCommand', array('param' => $param));
}

myCommand只需在根目录中创建一个名为paramhello.txt文件的目录。

我可以使用myCommand运行php artisan myCommand param1并且按预期工作。我也可以使用Artisan的tinker命令并完全运行Artisan::call()

但是,当我通过访问URL(例如example.com/hook&param=hello)尝试命令时,我的命令没有按预期创建任何内容。如果它也有帮助,我会在Laravel Forge上尝试这个。在我当地的开发机器上一切正常。

知道出了什么问题吗?

2 个答案:

答案 0 :(得分:4)

您可以通过

设置文件夹的权限
chmod 777 -R /path/to/folder

你绝对不应该这样做,因为之后每个人都可以在这个目录中编写和执行所有内容

或者,我希望您创建一个新组,让我们称之为用户组:

sudo groupadd usergroup

现在该组已存在,请将两个用户添加到其中:

sudo usermod -a -G usergroup <your username>
sudo usermod -a -G usergroup www-data

现在剩下的就是设置目录的权限:

sudo chgrp -R usergroup /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory     // <<<<<< change this to 775

现在,只有用户组组的成员才能读取,写入或执行目录中的文件和文件夹。请注意-Rchmod命令的chgrp参数:这会告诉他们递归到目标目录的每个子目录并修改每个可用的文件和目录。

如果您希望其他人能够阅读文件,您可能还希望将770更改为774,如果您希望其他人阅读和执行文件,则可能需要更改775等。组分配更改不会生效直到用户退出并重新登录。

在你的情况下,你应该明确地将它改为775 ......

答案 1 :(得分:1)

您需要正确设置目录权限。

sudo chown -R <YOUR_USERNAME>:www-data <THE_DIRECTORY>