Lumen의 장인 서버
php artisan serve
명령을 구현하기 위한 많은 제안을 발견했지만, 개발 중, 특히 마이크로서비스의 대중화와 함께, 일반적으로 포트만 사용하는 개발 환경에서 서로 다른 애플리케이션이 통신해야 하는 상황이 있을 수 있습니다. 입장.따라서
php -S host:port -t public
를 사용하여 응용 프로그램별로 응용 프로그램을 시작하는 것은 약간 까다롭거나 성가실 수 있습니다.다행히 env에 APP_URL 값이 있으면 프로세스의 일부를 용이하게 할 수 있습니다.
먼저
ServeCommand.php
편집 후 ./app/Console/Commands/
폴더에 app/Console/Kernel.php
라는 파일을 생성하고 다음과 같이 ServerCommand
를 넣습니다.<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
Commands\ServeCommand::class,
];
클래스
Illuminate\Console\Command
에는 getOptions()
라는 보호된 메서드가 있습니다. 이를 사용하여 명령의 매개변수에 대한 기본값을 정의하거나 매개변수가 선택적( Symfony\Component\Console\Input\InputOption::VALUE_OPTIONAL
)인지 또는 필수( Symfony\Component\Console\Input\InputArgument::REQUIRED
)인지 알릴 수도 있습니다.More details in: https://symfony.com/doc/current/console/input.html
제안은 옵션으로 사용하는 것입니다. 즉, 사용자가 원하는 경우 명령을 입력할 때 호스트 또는 포트를 변경할 수 있도록 하거나
APP_URL
값을 사용하는 것입니다. 내가 사용한 기본 호스트 및 포트 값을 얻으려면 parse_url
사용 예:protected function getOptions()
{
$url = env('APP_URL');
return [
[
'host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', parse_url($url, PHP_URL_HOST)
], [
'port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', parse_url($url, PHP_URL_PORT)
],
];
}
호스트와 포트(명령줄 또는
.env
를 통해 정의됨)를 얻으려면 다음을 사용하십시오.$host = $this->input->getOption('host');
$port = $this->input->getOption('port');
그러나 여전히 세부 사항이 있습니다. 사용자가 다른 폴더 수준에서
artisan serve
를 시작할 수 있으므로 -t
디렉터리를 시작하도록 public
( php built in webserver )를 설정합니다. 프로젝트 디렉토리를 얻으려면 다음을 사용하십시오.$base = $this->laravel->basePath();
명령 호출은 다음과 같아야 합니다.
passthru('"' . PHP_BINARY . '"' . " -S {$host}:{$port} -t \"{$base}/public\"");
요점의 출처: https://gist.github.com/brcontainer/44f47d35f47cd4e33f14023f8521bea1
전체 소스 코드:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
class ServeCommand extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'serve';
/**
* The console command description.
*
* @var string
*/
protected $description = "Serve the application on the PHP development server";
/**
* Execute the console command.
*
* @return void
*/
public function handle()
{
$host = $this->input->getOption('host');
$port = $this->input->getOption('port');
$base = $this->laravel->basePath();
$this->info("Lumen development server started on http://{$host}:{$port}/");
passthru('"' . PHP_BINARY . '"' . " -S {$host}:{$port} -t \"{$base}/public\"");
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
$url = env('APP_URL');
return [
[
'host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', parse_url($url, PHP_URL_HOST)
], [
'port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', parse_url($url, PHP_URL_PORT)
],
];
}
}
Reference
이 문제에 관하여(Lumen의 장인 서버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brcontainer/artisan-server-for-lumen-1acg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)