почему я должен продолжать запускать команду artisan serve, чтобы сервер работал?

Я изучаю laravel, и вначале я запустил команду

php artisan serve

и держите окно терминала открытым, чтобы я мог поддерживать работу сервера, но позже я захотел просто работать со своим приложением, как с обычным приложением php, поэтому я создал виртуальный хост, направленный в «общедоступную» папку моего приложения laravel.

вот проблема:

Мне все еще нужно запустить "php artisan serve" и открыть URL моего виртуального сервера.

http://brk.localhost:8000

а затем закройте терминал, все это до того, как я смогу нормально открыть эту ссылку, не определяя номер порта 8000. и если я оставил свой компьютер и вернулся, чтобы продолжить работу, я обнаружил, что не могу получить к нему доступ, если я не выполню весь процесс опять таки. и если я внес изменения в любое из представлений приложения, у меня возникнет такая же проблема.

что мне не хватает?


person medo ampir    schedule 27.02.2016    source источник


Ответы (3)


Просто добавьте символ и '&' в конец команды. Это позволит ему работать в фоновом режиме.

person Basel J. Hamadeh    schedule 28.02.2016
comment
php artisan serve& работал как шарм !! Спасибо. Как его сейчас закрыть? Только закрытие терминала? - person PlayHardGoPro; 20.07.2017
comment
После этого нужно ли мне нажать Ctrl+c? @PlayHardGoPro - person Kiran Reddy; 26.12.2017
comment
@KiranReddy Ya! Ctrl+C сделал свое дело. не уверен, будет ли работать команда Exit. - person PlayHardGoPro; 02.01.2018
comment
Ваш ответ немного вводит в заблуждение, когда я помещаю в конец фактической команды, например: php artisan serve& --host=xxx.xx.xx.xx --port=7879 он запустил локальный IP 127.0.0.0, затем я помещаю его в конец параметров, таких как php artisan serve --host=xxx.xx.xx.xx --port=7879&, он действительно начал работать нормально, затем снова вернулся к этому сообщению и голосование за. - person CodeToLife; 24.01.2021

Есть 3 основных способа получить доступ к своему приложению Laravel во время его разработки.

1) Использование artisan serve

Этот метод, вероятно, самый простой, но он означает, что вы должны помнить об этом каждый раз, когда начинаете работать над своим проектом, чего, как вы сказали, вы не хотите делать.

2) Использование Laravel Homestead

Этот метод требует дополнительной настройки, но документация очень хороша. Вам не нужно помнить, что окно терминала должно оставаться открытым, когда вы его используете, но вам все равно придется не забывать, чтобы виртуальная машина оставалась работающей.

3) Настройте LAMP / MAMP / WAMP или даже LEMP

Настройка локального демона Apache или Nginx на вашем собственном компьютере потребует наибольшего количества настроек, но это будет означать, что ваш веб-сервер автоматически запускается с вашей ОС, поэтому все, что вы поместите в свой веб-каталог, всегда будет доступно через веб-браузер. Вам не нужно будет запускать и команды терминала, или запускать виртуальную машину.

Однако обратите внимание, что, используя локальный демон Apache / Nginx, вы жертвуете большим количеством гибкости, и у вас не будет роскоши удалить все это и начать заново через несколько минут, если вы испортите конфигурацию.

Тем не менее, многие люди по-прежнему предпочитают запускать собственный демон Apache / Nginx локально для разработки. Я являюсь одним из них.

person Joseph    schedule 27.02.2016
comment
У меня установлено все приложение, входящее в LAMP. Сервер Apache, PHP, Mysql и все в моей системе Ubuntu все еще имеют ту же проблему. - person medo ampir; 27.02.2016
comment
Да, но вы сказали, что выполняете свой проект, используя artisan serve. Если у вас установлен и правильно настроен LAMP, вам не нужно использовать artisan serve. Вы можете просто получить доступ к localhost. Если это не сработает, значит, у вас неправильно настроена LAMP. - person Joseph; 27.02.2016
comment
может быть но как проверить? все работает нормально, кроме приложения laravel, оно полно сложностей ... и теперь, пока я пытаюсь найти решение моей проблемы выше, я столкнулся с другой проблемой, которой раньше не было. Я могу получить доступ к главному представлению /, но не могу получить доступ к другому представлению. он говорит, что запрошенный URL / логин не был найден на этом сервере .. фреймворк не должен делать его хуже: D - person medo ampir; 27.02.2016
comment
Вы сказали ЛАМПА, верно? Значит, вы используете Linux. Что в вашем каталоге / var / www? Ваш проект Laravel должен быть там и доступен по адресу localhost / public, но это можно настроить. - person Joseph; 27.02.2016
comment
вот это / var / www / html / brokers - это каталог проекта. и у меня есть виртуальный хост brk.localhost, направленный в / var / www / html / brokers / public - person medo ampir; 27.02.2016
comment
Можете ли вы временно переместить свой проект Laravel оттуда и поместить файл index.html с текстом в него в / var / www / html / public, чтобы убедиться, что это не проблема Apache? - person Joseph; 27.02.2016
comment
Хорошо, только что сделал это, я переместил все приложение в каталог localhost и создал index.html с простыми данными, а переход на localhost / public правильно показывает этот простой файл. а также, когда я открываю localhost, страница по умолчанию в var / www / html / index.html отображается отлично, и если я изменил ее на index.php также отлично работает. - person medo ampir; 27.02.2016
comment
Извините, просто прочтите свое старое сообщение еще раз и увидите, что вы сказали, что / теперь работает правильно. Так что исходный вопрос уже не актуален. Я думаю, вам следует опубликовать новый вопрос о проблеме входа в систему, показывая ваши маршруты и подробно описывая, что вы сделали для настройки аутентификации до сих пор. - person Joseph; 27.02.2016
comment
/ работает надежно, потому что я пишу, что php artisan работает каждые несколько минут, но та же проблема все еще существует. Если я перезапущу свой компьютер, он не будет работать, если я снова не запустил команду. - person medo ampir; 27.02.2016
comment
Но вы сказали, что artisan serve работает на brk.localhost: 8000. Apache будет работать на brk.localhost (без порта 8000), если вы его не изменили. - person Joseph; 27.02.2016
comment
позвольте мне прояснить это, прямо сейчас у меня есть все файлы приложения в моем каталоге var / www / html. какой у меня URL главной страницы ?. потому что localhost возвращает страницу с индексом / всех файлов. а localhost / public возвращает пустую страницу. - person medo ampir; 27.02.2016
comment
Это зависит от того, что вы установили для DocumentRoot на своем виртуальном хосте. - person Joseph; 27.02.2016
comment
Если корень вашего документа - / var / www / html, тогда ваш URL-адрес brk.localhost / public, но если вы установите корень документа на / var / www / html / public, тогда ваш URL-адрес для дома Laravel будет просто brk.localhost (до тех пор, пока когда вы помещаете Laravel в / var / www / html) - person Joseph; 27.02.2016
comment
Я переместил все приложение в каталог html, позволяет работать оттуда и забыть о виртуальном сервере. Я изменил корень документа, поэтому теперь localhost указывает на общую папку laravel. и на всякий случай я изменил переопределение на Все. и перезапустил apache. localhost - это пустая страница. и localhost / public показывает Запрошенный URL / public / не был найден на этом сервере. - person medo ampir; 27.02.2016
comment
Но если вы разместите файл index.html в открытом доступе и получите доступ к localhost (без publuc), тогда он будет работать? В таком случае, можете ли вы включить отображение ошибок в php.ini и посмотреть, что происходит? - person Joseph; 27.02.2016

Я столкнулся с аналогичной ситуацией, когда, если бы я хотел сохранить какие-либо изменения в файлах проекта, мне пришлось бы запустить «php artisan serve» и выйти из него, прежде чем apache2 сможет обслуживать сайт.

Я исправил это, изменив разрешения файловой системы для своего проекта.

Я нашел это, что устранило проблему с разрешениями.

Это решило ситуацию, когда мне приходилось запускать php artisan serve снова и снова.

Основная причина этого - запуск менеджеров пакетов как sudo. Каждый файл создается с плохими разрешениями.

person Manu    schedule 21.03.2017