Как сделать команду custom serve? - PullRequest
0 голосов
/ 26 сентября 2019

Я действительно делал это в моем прошлом проекте, и он работал, но теперь это новая версия 6.0 , и это было 5.8 , которое я использовал раньше.

Итак, что я пытался, я просто создал команду:

php artisan make:command CustomServeCommand

И я поместил этот код в CustomServeCommand класс:

protected function getOptions()
{
    return [
        ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', '127.0.1.1'],//default 127.0.0.1
        ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', 80],
    ];
}

Когда яphp artisan serve это не работает.

На самом деле, код выше работал в 5.8 версии, возвращающей эти строки:

Laravel development server started: <http://127.0.1.1:80>


Мой вопрос сейчаскак сделать команду custom serve в версии 6.0:

Вместо 127.0.0.1:8000, я хочу служить 127.0.1.1:80.

Кто-нибудь знает, как этого добиться?


EDITED :

Примечание: это просто для уменьшения должности, я не собираюсь публиковать коды на изображении.

И вот 5.8 enter image description here

Вот сгенерированный код в 6.0 enter image description here

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Потому что в 5.8 версии вы были EXTENDING существующей командой, которую композитор загружает до вашей собственной, а в 6.0 вы не

Расширяетесуществующая serve команда, подобная этой

Это все, что вам нужно (удалить оставшуюся часть сгенерированного кода)

Протестировано в 6.0.0

<?php

namespace App\Console\Commands;

use Illuminate\Foundation\Console\ServeCommand;
use Symfony\Component\Console\Input\InputOption;

class CustomServeCommand extends ServeCommand
{
    protected function getOptions()
    {
        return [
            ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', '127.0.1.1'], //default 127.0.0.1
            ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', 80],
        ];
    }
}

И НЕ регистрация команды в Console\Kernel

Ваш выбор порта немного странный, поэтому вам нужно сделать пару вещей

Остановить службы, уже использующие этот порт (при условии Linux)

sudo service nginx stop 
# or
sudo service apache2 stop 

Выполнить команду с правами суперпользователя

sudo php artisan serve

Результат

~/Sites/laravel (master ✗) ✹ ★ ᐅ  sudo php artisan serve
Laravel development server started: <http://127.0.1.1:80>
[Thu Sep 26 18:04:02 2019] Failed to listen on 127.0.1.1:80 (reason: Address already in use)
~/Sites/laravel (master ✗) ✹ ★ ᐅ  sudo service nginx stop
~/Sites/laravel (master ✗) ✹ ★ ᐅ  sudo php artisan serve 
Laravel development server started: <http://127.0.1.1:80>
^C
~/Sites/laravel (master ✗) ✹ ★ ᐅ  php artisan serve
Laravel development server started: <http://127.0.1.1:80>
[Thu Sep 26 18:04:23 2019] Failed to listen on 127.0.1.1:80 (reason: Permission denied)
~/Sites/laravel (master ✗) ✹ ★ ᐅ  sudo php artisan serve
Laravel development server started: <http://127.0.1.1:80>
[Thu Sep 26 18:10:28 2019] 127.0.0.1:58714 [200]: /robots.txt
[Thu Sep 26 18:10:29 2019] 127.0.0.1:58716 [200]: /favicon.ico

PS: я лично не рекомендую делать это, порт 80 являетсястандартный порт HTTP и не должен использоваться встроенным сервером

Обратите внимание, что сервер будет передавать запросы на другой локальный IP-адрес и порт, несмотря на http://127.0.1.1 доступ

Кроме того,Я рекомендую дать Laravel Valet выстрел (доступно как для Mac, так и для Linхх) как легче получить доступ к project.test без какой-либо команды

Но, тем не менее, я надеюсь, что это поможет

0 голосов
/ 26 сентября 2019

Почему бы не передать его в качестве параметра?

Для порта 8000:

php artisan serve --port=8080

И если вы хотите запустить его на порту 80, вам, вероятно, нужно использовать его с sudo:

sudo php artisan serve --port=80
...