Sử dụng Laravel Homestead: 'không có tệp đầu vào được chỉ định'


113

Tôi mới sử dụng Laravel và Homestead, và tôi sẽ đánh giá cao bất kỳ sự trợ giúp nào hoặc một điểm đi đúng hướng. Tôi đã có thể truy cập thành công màn hình "Bạn đã đến" khi tôi chạy "php Artian serve" nhưng khi tôi cố gắng làm điều tương tự thông qua Vagrant, tôi nhận được "không có tệp đầu vào được chỉ định". Tệp Homestead.yaml của tôi trông như thế này:

authorize: /Users/me/.ssh/id_rsa.pub

keys:
    - /Users/me/.ssh/id_rsa

folders:
    - map: /Users/me/code/exampleproject
      to: /home/vagrant/code/exampleproject

sites:
    - map: exampleproject.app
      to: /home/vagrant/code/exampleproject/public

variables:
    - key: APP_ENV
      value: local

Trên máy tính của tôi, tôi có các thư mục sau:

/Users/me/code/Homestead
/Users/me/code/exampleproject //this is the directory created with composer

Trên Hộp Vagrant của tôi, vì lý do nào đó, tôi có hai thư mục có tên "mã" và "Mã":

/home/vagrant/code/exampleproject 
/home/vagrant/Code

Tôi đã kiểm tra và tôi có thể thấy các thay đổi được thực hiện đối với các tệp ví dụ trên máy tính của tôi được phản ánh trong các tệp hộp lang thang.

Không thực sự chắc chắn làm thế nào để tìm ra điều này !! Tôi thực sự sẽ đánh giá cao bất kỳ sự giúp đỡ nào có thể :)

Câu trả lời:


163

Thay vì cài đặt lại, hãy thử

vagrant up --provision

hoặc là

homestead up --provision

1
vagrant up --provisionkhông làm việc cho tôi, nhưng homestead up --provisionkhông
zillaofthegods

Cảm ơn bạn rất nhiều!
yohannan_sobin

1
Chỉ cần làm vagrant reload --proivision.
Omar Tariq

1
Phương pháp này cũng đang hoạt động, bạn có thể thử tiêu diệt vagrant và kích hoạt sau đó tôi thực hiện tất cả các cấu hình và nó sạch hơn nhiều.
George Plamenov Georgiev

xin chào, tôi có vấn đề tương tự ở đây thay vì ở nhà tôi chạy nó trong cpanel bất kỳ đề xuất nào?
Aslam

45

Tôi đã gặp vấn đề chính xác tương tự và đã tìm ra giải pháp thông qua việc sử dụng larachat.

Đây là cách khắc phục mà bạn cần phải chỉnh sửa cài đặt tệp homestead.yaml của mình. Nếu bạn muốn biết nó được thực hiện như thế nào, hãy làm theo hướng dẫn Jeffery Way trên homestead 2.0 https://laracasts.com/lessons/say-hello-to-laravel-homestead-two .

Bây giờ để khắc phục sự cố, Input not specifiedbạn cần phải ssh vào hộp homestead và nhập

serve domain.app /home/vagrant/Code/path/to/public/directoryđiều này sẽ tạo ra một tập lệnh phục vụ cho nginx. Bạn sẽ cần làm điều này mỗi khi chuyển đổi dự án.

Anh ấy cũng thảo luận về những gì tôi giải thích trong loạt bài này https://laracasts.com/series/laravel-5-fundamentals/


2
Điều này thật đúng với gì mà tôi đã tìm kiếm. Cảm ơn Rudy!
Matthew Fritz,

Tôi đoán vấn đề sẽ xảy ra nếu thêm một dự án khác vào Homestead phải không? Có phải nó không thể chạy servetự động cho tất cả?
Volatil3

Cảm ơn đã chia sẻ hướng dẫn. Bây giờ nó đã hoạt động!
Dan Aronne

Với một bản cài đặt mới của vagrant, virtualbox, homestead ... và thử hủy / up, lệnh phục vụ cuối cùng cũng hoạt động. Cảm ơn
Chris

28

Điều này rất dễ sửa, vì bạn đã thay đổi tên thư mục thành: exampleproject

Vì vậy, SSH cho người lang thang của bạn:

ssh vagrant@127.0.0.1 -p 2222

Sau đó thay đổi cấu hình nginx của bạn:

sudo vi /etc/nginx/sites-enabled/homestead.app

Chỉnh sửa URI chính xác cho thư mục gốc trên dòng 3 với tên thư mục mới :

root "/Users/MYUSERNAME/Code/exampleproject/public";

Khởi động lại Nginx

sudo service nginx reload

Tải lại trình duyệt web, nó sẽ hoạt động ngay bây giờ


câu trả lời tốt nhất trên tất cả các trang web cho vấn đề này. thanh danh!
Defkon1

Điều này đã khóa máy tính của tôi. Sẽ rất tuyệt nếu lý do cho các lệnh này được đưa ra - chính xác tại sao chúng cần thiết và chúng đang làm gì.
Joshua Foxworth

24

Đối với tôi những điều sau đây đã hoạt động:

vagrant reload --provision


1
Điều này cũng làm việc cho tôi để làm cho nó tải các trang web sau khi tôi thay đổi thư mục máy chủ lưu trữ cơ sở thành Mã thay vì thiết kế web. Cảm ơn! - rhand bây giờ chỉ cần chỉnh sửa
rhand

Nó cũng có thể là sự cố viết thường hoặc viết hoa trong Homestead.yamltệp. Ví dụ, tôi đã ánh xạ đến /phpmyadmintên thư mục của tôi thực sự là khi nào phpMyAdmin.
Pathros

1
Lý do tôi sử dụng giải pháp này là nó giữ nguyên dữ liệu cơ sở dữ liệu của tôi. Giải pháp này được mô tả chi tiết hơn tại đây: laracasts.com/discuss/channels/general-discussion/…
lwitzel

8

Đưa ra phản hồi của tôi trong trường hợp có ai đang gặp khó khăn với vấn đề này.

  1. Bạn có thể cần xác minh rằng cấu hình server.root trong "/ etc / ngnx / sites-available / domain" khớp với cấu hình sites.to của bạn trong "Homestead.yaml".

  2. Nếu nó không khớp, hãy thay đổi nó và khởi động lại máy chủ web bằng "sudo service nginx restart"

  3. Và mọi thứ vẫn không hoạt động sau đó cho phép ghi quyền cho thư mục "TRANG WEB / ứng dụng / lưu trữ của bạn" dưới dạng "ứng dụng / lưu trữ chmod -R 777"


7

Tôi cũng gặp vấn đề tương tự, tôi đã cho rằng Laravel được cài đặt "out of the box" nhưng có vẻ như không phải vậy. Tôi đã truy cập vào máy và chạy các lệnh sau:

cd Code
sudo composer self-update #not necessary, but I did it anyways
composer create-project laravel/laravel Laravel --prefer-dist

Và mọi thứ vẫn chạy như bình thường.


1
Cảm ơn Arda! Đó là chìa khóa. Nó đã cho tôi một vài giờ :( Bạn phải đi bên trong máy ảo và chạy: nhà soạn nhạc tạo dự án laravel / laravel thư mục tên
gtamborero

1
Điều quan trọng cần hiểu với lỗi "Không có tệp đầu vào được chỉ định" là xem trên máy chủ của bạn cấu hình của Homestead.yaml -> Tệp này chứa ánh xạ trang web của bạn (map: homestead.test thành: / home / vagrant / code / public) Điều này có nghĩa là nếu bạn truy cập máy ảo của mình để root-> / home / vagrant / code / public / thì bạn phải có các tệp html php của mình ở đó. Nếu không có ở đó, hãy chạy: composer create-project laravel / laravel :) Nếu mọi thứ hoạt động thì bạn phải biết rằng "~ /" có nghĩa là "c: / windows / users / yourname /" vì vậy sẽ có các tệp được sincro hóa của bạn từ lang thang đến máy chủ của bạn
gtamborero

5

Sự cố này xảy ra với tôi sau khi chỉnh sửa Homestead.yaml. Tôi đã giải quyết vấn đề này bằng cách

homestead destroy
homestead up

Đáng buồn thay, điều này cũng hiệu quả với tôi, điều này khiến cơ sở dữ liệu của tôi bị phá hủy liên tục. Bạn đã tìm thấy giải pháp nào cho việc này chưa?
LoveAndHappiness

Thay vào đó, bạn có thể chỉ thực hiện 'cung cấp nhà trọ'. Ngoài ra nếu bạn chưa có, tôi khuyên bạn nên thiết lập trình gieo hạt và di chuyển để bạn có thể ít bảo vệ cơ sở dữ liệu hơn.
Rayzor

Sửa chữa vấn đề của tôi: D, và điều này là tốt: laracasts.com/lessons/say-hello-to-laravel-homestead-two
Ihab Shoully

5

Tôi đã có những vấn đề tương tự

Nhưng quên rằng thông số kỹ thuật cho biết tệp cấu hình sẽ được đặt tại

~ / .homestead / Homestead.yaml và đang cập nhật ~ / Homestead / src / sơ khai / Homestead.yaml

Vì vậy, FIX là để cập nhật Homestead.yaml ở đây tại

~ / .homestead / Homestead.yaml

Trước

sites: - map: homestead.app to: /home/vagrant/Laravel/public

Sau

sites: - map: homestead.app to: /home/vagrant/Code/mysitename/public

Sau đó tôi chạy
vagrant up --provision

Hy vọng điều này làm việc cho bất kỳ ai khác.


3

Sau khi tôi đổi tên một số thư mục, tôi phải hủy và chạy lại vagrant. Không có giải pháp nào ở đây hiệu quả.

Điều này đã làm việc cho tôi:

vagrant destroy
vagrant up

1
Đừng phá hủy người dùng lang thang, Sử dụng tính năng tạm dừng lang thang để tắt máy ảo của bạn một cách duyên dáng.
AbdulBasit


2

Tôi đã gặp sự cố tương tự khi theo dõi tài liệu Laravel ( https://laravel.com/docs/5.2/homestead )

Vấn đề của tôi rất đơn giản, tôi đã bỏ lỡ phần này trong tài liệu:

Tệp Homestead.yaml sẽ được đặt trong thư mục ẩn ~ / .homestead:

Vì vậy, tôi đã cập nhật tệp Homestead.yaml sai, vì tệp đã được di chuyển khi tôi chạy lệnh bash init.sh.

Tôi chỉ nhận ra điều này sau rất nhiều tìm kiếm, vì vậy hy vọng điều này sẽ giúp ích cho ai đó.


2

Tôi chỉ đang đấu tranh với cùng một tình huống. Sau đây đã giải quyết vấn đề:

Nếu bạn có cấu trúc thư mục như thế này:

folders:
    - map: /Users/me/code/exampleproject
      to: /home/vagrant/code/exampleproject

Chỉ cần tạo thư mục 'public' trong exampleproject trên máy chủ của bạn.


2

Tôi đang sử dụng Windows 10 và có cấu hình Homestead sau

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
folders:
    - map: ~/code               #folder in local computer where codes are stored eg, c:\xampp\htdocs\project1
      to: /home/vagrant/code    #folder in the VM where the above code will be mapped

sites:
    - map: homestead.local          #fake name of the site (redirect this domain to the above IP ie 192.168.10.10 in hosts file ie, c:\windows\system32\etc\hosts)
      to: /home/vagrant/code/public #complete path to index.php file in the local computer to be utilized by homestead.local 
databases:
    - homestead

Tôi đã PING chỉnh sửa miền homestead.local và nhận được kết quả.

Nhưng khi tôi gõ http: //homestead.local trong trình duyệt, tôi đã 'không có tập tin đầu vào quy định' lỗi

Tôi đã kiểm tra mã / thư mục chung và không có tệp chỉ mục nào. Tôi chắc chắn rằng hệ thống đang tìm kiếm tệp mặc định bị thiếu.

Sau khi tôi tạo một tệp chỉ mục, nó bắt đầu hoạt động tốt.

Cập nhật:

Lần tiếp theo, nó xảy ra sau một thay đổi trong tệp Homestead.yaml , tôi đã chạy vagrant reload --provisionlệnh và nó hoạt động.

Có vẻ như vagrant reloadchỉ chạy sẽ không cung cấp hộp lang thang. Đọc ở đây


1

Lưu ý, linux phân biệt chữ hoa chữ thường. Đó có thể là lý do tại sao bạn thấy thư mục "Mã" và "mã".

Những gì tôi sẽ làm là làm lại thiết lập vagrant một lần nữa và nếu bạn muốn giữ cho nó đơn giản và khớp với những gì hộp Homestead có làm mặc định, hãy đặt thư mục trong máy chủ của bạn là "Mã" bằng chữ hoa.

Bạn cũng có thể trong phần "thư mục" chỉ ánh xạ tới thư mục "Mã" trong máy của bạn, trong trường hợp bạn quyết định thêm nhiều trang web vào thiết lập Homestead của mình sau này. Bằng cách đó trong / home / vagrant / Code / bạn sẽ thấy tất cả các dự án trang web của mình và bạn có thể tiếp cận nhiều trang hơn trỏ đến thư mục "công khai" của chúng.


Cảm ơn, @noeldiaz! Hôm qua, tôi đã làm những gì bạn nói. Tôi lại tải xuống vagrant, sau đó xóa thư mục Homestead của mình bằng "rm -r Homestead", sau đó mở vagrant lên và khi tôi thấy thủ tục vagrant up chạy thêm một số thứ như khởi động máy chủ nginx. Khi tôi thử trang web, nó đã hoạt động! Ngoài ra, vấn đề thư mục "mã" "Mã" đã biến mất :) Tôi cũng đã thực hiện những gì bạn đề xuất, cũng như phần "thư mục". Tôi / mẹ hơi sợ, vì có vẻ như tôi không hiểu cách gỡ lỗi máy chủ / hộp ảo ', nhưng sẽ tiếp tục! Tôi thực sự đánh giá cao sự giúp đỡ của bạn :)
bryant

1

Điều này có thể do máy chủ web nginx không trỏ đến đúng đường dẫn.

Có hai chìa khóa mà bạn nên xem: mapchìa khóa dưới folderstochìa khóa dưới sites. Các folderschính bản đồ thư mục trên máy tính cục bộ của bạn để VM lang thang. Các sitesphím được sử dụng để tạo ra một máy chủ ảo trên nginx với giá trị trong to.

Những gì bạn muốn đảm bảo là tobên dưới siteschỉ ra đúng đường dẫn đến public.

Vấn đề là tôi đã tạo dự án laravel của mình với composer create laravel/laravel. Điều này đã tạo ra một thư mục trong thư mục hiện tại của tôi có tên laravel. Sau đó, không cần thay đổi thư mục, tôi đã cài đặt trình trợ giúp homestead composer require laravel/homestead --dev.

Sau khi chạy php vendor/bin/homestead makevagrant upcấu trúc thư mục của tôi trông giống như sau:

$ cd laravel51
$ ls -a
.
..
.vagrant
laravel
composer.json
composer.lock
vendor
Homestead.yml
Vagrantfile 

Homestead.yml của tôi trông như thế này:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Nếu bạn quan sát kỹ, /Users/USER/Sites/sandbox/php/laravel51đường dẫn sẽ được gắn vào máy ảo ảo. Đây là thư mục sai vì nó phải trỏ đến thư mục gốc của dự án laravel nơi chứa thư mục ứng dụng của bạn. Điều đã xảy ra ở đây là tôi phải yêu cầu người trợ giúp ở nhà trong khi tôi đang ở gốc dự án .

Vì vậy, bây giờ câu hỏi là tôi phải làm gì? Bạn có hai lựa chọn: thoát khỏi máy ảo homestead hiện tại của bạn và bắt đầu lại, nhưng lần này là từ gốc của dự án HOẶC lấy lại những gì bạn đã có.

Nếu bạn muốn lấy lại những gì bạn có, bạn sẽ phải di chuyển một số tệp và một thư mục vào gốc dự án laravel của mình.

Đây là những đồ tạo tác bạn cần di chuyển:

.vagrant
Homestead.yml
Vagrantfile

Điều composer.jsonnày sẽ không cần thiết vì bạn sẽ yêu cầu nó sau này.

Di chuyển các tệp đó vào thư mục gốc dự án laravel của bạn và thay đổi thư mục làm việc hiện tại của bạn đến đó ( cd laravel). Tại thời điểm đó, chỉ cần cập nhật bên mapdưới foldersvà đảm bảo rằng nó đang trỏ đến gốc dự án. Ngoài ra hãy chắc chắn rằng todưới phím sitestochìa khóa dưới foldersvới /publicnối vào nó.

Ví dụ:

folders:
    - map: "/Users/USER/Sites/sandbox/php/laravel51/laravel"
      to: "/home/vagrant/laravel51"

sites:
    - map: laravel51
      to: "/home/vagrant/laravel51/public"

Bây giờ hãy chạy composer require laravel/homestead --devđể trình trợ giúp homestead được yêu cầu vào tệp composer.json của dự án hiện tại của bạn và được cài đặt.

Chạy vagrant reload --provisionvà bạn sẽ được hoàn tất.


1

Điều này thường xảy ra khi bạn chỉnh sửa tệp Homestead.yaml .

Nếu giống như tôi, bạn đã thử homestead up --provisionvà không hiệu quả! sau đó thử điều này (nó hoạt động đối với tôi):

  • homestead destroy
  • homestead up

1

Các phiên bản cũ hơn của Homestead lập bản đồ cho các thư mục ~/Codeví dụ như theo mặc định ~/Code/laravel/public. Lưu ý các chữ hoa chữ thường trong ~/Code. Đây là những trường hợp nhạy cảm. Các phiên bản mới sử dụng chữ thường ~/code. Cập nhật các thư mục này trong của bạn Homestead.yamltheo thư mục thực tế của bạn.

TL; DR;

Cập nhật ~/Codelên ~/codehoặc ngược lại tùy thuộc vào tên thư mục thực của bạn.


1

Vấn đề tương tự đối với tôi.

Không vagrant provisionhoặc không homestead up --provisionhiệu quả với tôi, nhưng điều bên dưới đã làm - có lẽ vì homestead đã chạy khi tôi sửa đổi tệp yml

vagrant reload --provision


0

Trong Laravel 5, tôi phải truy cập vào máy chủ nhà của mình và chạy các lệnh sau:

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache

0

Đây là giải pháp của tôi:

Đó là sự cố về đường dẫn tệp nên dưới đây là đường dẫn các thư mục và trang web của tôi. Ngoài ra, tôi đã phải sử dụng "tiêu diệt lang thang" vì cấp phép không hoạt động.

nhập mô tả hình ảnh ở đây


0

Sự cố của tôi là trong tệp cấu hình của miền:

thư mục chung của dự án của tôi đã được tạo trong / home / vagrant / Code / demo / public

tệp cấu hình của miền (cho tôi /etc/nginx/sites-available/demo.app) đã được định cấu hình: "/ home / vagrant / Code / Laravel / public" thay vì "/ home / vagrant / Code / demo / public ".

Bây giờ nó đang hoạt động hoàn hảo.


0

Tôi đã gặp vấn đề tương tự với Homestead và chỉ cần cung cấp hộp đã phù hợp với tôi. Vì vậy, bạn nên thử điều này:

vagrant provision


0

vagrant provisioncác mã liên quan không hoạt động với tôi, sau một thời gian bị mất, tôi đã khởi động lại toàn bộ hệ thống. Bây giờ nó hoạt động ... -, - "


0

Tôi thay đổi nội dung homestead.yamlhoststheo này hướng dẫn laracast và homestead khởi động lại sử dụng vagrant suspend, vagrant haltvv / vagrant up; Tôi cũng đã cố gắng làm vagrant provisionnhư vậy, nhưng no file specifiedchỉ biến mất sau khi tôi khởi động lại máy tính của mình (tôi đang sử dụng Windows 7 PC) sau khi thực hiện tất cả các bước trên. Đó chắc chắn là một lỗi tốn thời gian và phức tạp.

Đây là công việc của tôi homestead.yamltrông như thế nào cho hai dự án laravel:

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
- ~/.ssh/id_rsa

folders:
    - map: D:\Projects
      to: /home/vagrant/Projects

sites:
    - map: projectone.app
      to: /home/vagrant/Projects/ProjectOne/public
    - map: projecttwo.app
      to: /home/vagrant/Projects/ProjectTwo/public

databases:
    - laraveldb

và đây là hoststệp của tôi :

...
127.0.0.1       localhost
192.168.10.10   projectone.app
192.168.10.10   projecttwo.app

Lưu ý, có hai cách cài đặt riêng biệt của laravel trong D:\Projects\ProjectOneD:\Projects\ProjectTwo

Sau đó, tôi truy cập dự án đầu tiên bằng cách gõ projectone.app:8000vào trình duyệt và projecttwo.app:8000cho dự án thứ hai.

PS Tôi đã thử nghiệm điều này cho Laravel 5.2 trên Windows


0

Điều này xảy ra vì bạn cần định cấu hình máy chủ nginx của mình đúng cách để phục vụ ứng dụng của bạn. Bạn có thể thực hiện việc này theo hướng dẫn này, bắt đầu trong chủ đề Định cấu hình Nginx và Gốc web .

Sau khi định cấu hình đúng liên kết tượng trưng giữa / etc / nginx / sites-available và / etc / nginx / sites-enable, bạn cần đảm bảo rằng biến gốc của bạn được đặt thành đường dẫn thư mục của ứng dụng. Đặt gốc nginx của bạn từ

root /usr/share/nginx/html;

đến

/home/vagrant/Projects/ProjectOne/public

Ngoài ra, bạn phải đặt index.php trước các tệp html của mình để php được phân phát trước html. Thay đổi điều này

index index.html index.htm;

đến cái này

index index.php index.html index.htm;

Sau khi hoàn tất cấu hình, hãy khởi động lại máy chủ nginx của bạn với

sudo service nginx restart

Đơn của bạn sẽ được phục vụ ngay bây giờ.


0

Tôi đã có một vấn đề như vậy. Tôi đã xem lại tệp Homestead.yaml và tất cả các tệp cũng như tất cả các cài đặt đều chính xác. Sự cố của tôi đã được gỡ bỏ sau các bước sau.

1-Nếu bạn đang ở dòng lệnh vagrant @ homestead: ~ $, hãy nhập exitlệnh.

2- Bây giờ bạn phải ở bên trong thư mục Homestead. chạy lệnh này

vagrant reload --provision

3- chạy vagrant ssh

Bây giờ nếu bạn nhập địa chỉ liên quan trong trình duyệt của mình, nó sẽ hiển thị trang Laravel.


0

Thử khởi động lại máy tính của bạn

Có một Homestead đang hoạt động đang chạy cục bộ, tại một số điểm dừng lại và sẽ nhận được lỗi "Không có tệp đầu vào được chỉ định". Tôi không thể theo dõi nó.

Khi khởi động lại máy tính, lỗi đã biến mất.


0

Nếu bạn đổi tên thư mục chứa dự án Homestead của mình, bạn sẽ gặp lỗi này. Truy cập Homestead.yamltệp của bạn và cập nhật bất kỳ tham chiếu nào để trỏ đến thư mục đã đổi tên, sau đó thực hiện lại vagrant up(v.v.)


0

Nếu bạn đang sử dụng phiên bản mới của larval 7> = bạn có thể sử dụng từ thư mục cũ của mình vagrant provision

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.