使用 Artisan 创建一个新命令,没有 shell 访问权限
Creating a new Command using Artisan, without shell access
我需要在 Laravel 网站上设置一些 cron
作业。似乎首先我必须 运行 shell 中的以下命令开始:
php artisan command:make CustomCommand
但是由于我没有 shell 访问权限,我唯一的其他选择是使用 Artisan::call
并且通过 HTTP 进行访问。语法是这样的:
\Artisan::call( 'command:make',
array(
'arg-name' => 'CustomCommand',
'--option' => ''
)
);
我面临的问题是我似乎无法找到 command:make
命令的 arg-name
值。
如果有人提到 make
命令的 参数名称 或提出不需要 shell 访问权限的替代解决方案,我将非常感激。
您可以通过创建代表您的命令的 class 来手动添加它。 cli 命令生成下一个文件:
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class Test extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
//
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array(
array('example', InputArgument::REQUIRED, 'An example argument.'),
);
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array(
array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
);
}
}
将它放在您的 commands
目录中(对于 L4,它是 app/commands
)。接下来只需将自定义命令的绑定添加到您的 app/start/artisan.php
文件:
Artisan::add(new Test);
就是这样。当您不需要接触服务器的 crontab 时,这是理想的解决方案。如果您可以从 CP 访问它,那将是最简单的解决方案。如果您没有这种能力,现在可以将 crontab 设置为 运行 您的自定义命令。希望这有帮助。
我需要在 Laravel 网站上设置一些 cron
作业。似乎首先我必须 运行 shell 中的以下命令开始:
php artisan command:make CustomCommand
但是由于我没有 shell 访问权限,我唯一的其他选择是使用 Artisan::call
并且通过 HTTP 进行访问。语法是这样的:
\Artisan::call( 'command:make',
array(
'arg-name' => 'CustomCommand',
'--option' => ''
)
);
我面临的问题是我似乎无法找到 command:make
命令的 arg-name
值。
如果有人提到 make
命令的 参数名称 或提出不需要 shell 访问权限的替代解决方案,我将非常感激。
您可以通过创建代表您的命令的 class 来手动添加它。 cli 命令生成下一个文件:
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class Test extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
//
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array(
array('example', InputArgument::REQUIRED, 'An example argument.'),
);
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array(
array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
);
}
}
将它放在您的 commands
目录中(对于 L4,它是 app/commands
)。接下来只需将自定义命令的绑定添加到您的 app/start/artisan.php
文件:
Artisan::add(new Test);
就是这样。当您不需要接触服务器的 crontab 时,这是理想的解决方案。如果您可以从 CP 访问它,那将是最简单的解决方案。如果您没有这种能力,现在可以将 crontab 设置为 运行 您的自定义命令。希望这有帮助。