how to solve the following error while creating new laravel project - laravel

i am new to homestead and laravel , i am trying to install homestead and start new laravel proeject , i follow the steps in the following link , https://www.youtube.com/watch?v=Il08--droNI, it seems that i succeed to install homestead then i started
vargant up
and installed the laravel inside my Homestead folder using the following command
composer global require laravel/installer
now i am trying to start the new project using the following command
laravel new blog
but it gives me the following errors
Crafting application...
PHP Warning: file_put_contents(/home/vagrant/code/laravel_816486aaffc1239c550dccbdbf28f281.zip): failed to open stream: Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 147
Warning: file_put_contents(/home/vagrant/code/laravel_816486aaffc1239c550dccbdbf28f281.zip): failed to open stream: Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 147
PHP Warning: ZipArchive::extractTo(): Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 169
Warning: ZipArchive::extractTo(): Permission denied in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 169
PHP Warning: ZipArchive::close(): Invalid or uninitialized Zip object in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 171
Warning: ZipArchive::close(): Invalid or uninitialized Zip object in /home/vagrant/.composer/vendor/laravel/installer/src/NewCommand.php on line 171
You should verify that the "storage" and "bootstrap/cache" directories are writable.
In Process.php line 332:
The provided cwd "/home/vagrant/code/myproject" does not exist.
new [--dev] [--auth] [-f|--force] [--] [<name>]
vagrant#homestead:~/code$ ^C
here is my .yaml file
---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
folders:
- map: C:\Users\hit-ham\laravel-apps
to: /home/vagrant/code
type: "nfs"
sites:
- map: myproject.test
to: /home/vagrant/code/myproject/public
databases:
- homestead
features:
- mariadb: false
- ohmyzsh: false
- webdriver: false
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
my Homestead folder is in users/myname
edit: i tried to remove everything and setup new windows , and start everything from the begining , installing vagrant , virtual box , composer, but i have now new error
Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for league/flysystem 1.0.67 -> satisfiable by league/flysystem[1.0.67].
- league/flysystem 1.0.67 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
Problem 2
- league/flysystem 1.0.67 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
- laravel/framework v7.6.2 requires league/flysystem ^1.0.8 -> satisfiable by league/flysystem[1.0.67].
- Installation request for laravel/framework v7.6.2 -> satisfiable by laravel/framework[v7.6.2].
To enable extensions, verify that they are enabled in your .ini files:
- C:\php7\php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

or in windows with IIS
extension=php_fileinfo.dll

In the php.ini file, uncomment the following line extension = fileinfo

Related

Laravel homestead 502 bad gateway

Everytime i go to my project I get a 502 bad gateway. When I refresh, the page works.. If I click a link to another page I get 502 bad gateway again. After the refresh the page loads. What could be the problem here.
Homestead.yaml
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: c:/Users/MyNameHere/.ssh/id_rsa.pub
keys:
- c:/Users/MyNameHere/.ssh/id_rsa
folders:
- map: c:/Users/MyNameHere/Desktop/sites
to: /home/vagrant/code
sites:
- map: spa.test
to: /home/vagrant/code/spa/public
databases:
- homestead
Got the latest version for virtualbox and vagrant.
My spa folder contains the newest version laravel.
Login to Laravel Homestead Server with PuTTY and Private Key File.
then...
cd /etc/php/7.4/mods-available
sudo nano xdebug.ini
Comment out the first line
;zend_extension=xdebug.so
xdebug.remote_enable = 0
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 512
Then restart PHP-FPM
sudo service php7.4-fpm restart
Had the same issue with the latest version of homestead.
After digging in log files and then github issues for homestead, I found this this.
There's an issue with xdebug that they're waiting for a fix for. The solution is to disable xdebug or use php 7.2. I opted for the latter. In that case, make the following change in your homestead.yaml and then running vagrant reload --provision will fix this.
sites:
- map: spa.test
to: /home/vagrant/code/spa/public
php: "7.2"
I was having the same problem and I couldn't change the PHP version or disable xdebug, but I could and did change for the Apache server.
sites:
- map: spa.test
to: /home/vagrant/code/spa/public
type: "apache"
I had a similar issue, got the 502 error. Refreshing the browser or reloading the virtual machine had no effect.
I solved disabling the Xdebug. Found the solution here: https://christattum.com/disabling-xdebug-in-laravel-homestead/
On prompt:
cd /etc/php/7.4/mods-available
sudo vi xdebug.ini
Commented all the lines of the file with ;
Run the vagrant reload --provision command to the Homestead file in the virtual machine, and then after vagrant up, enter with vagrant ssh. Your problem will be solved :)
You can change your ip post adress and write 127.0.0.1 in your host file.
You can enter it by adding 8000 next to the project name in the search engine.
For example spa.test:8000 and then running vagrant reload --provision will fix this.
I lost 3 days trying to solve the same issue.
My mistake was to have defined in my host file something like:
127.0.0.1 spa.test
The solution is to add instead, the same IP you specified in Homestead.yaml.
192.168.10.10 spa.test
to /etc/host (In case of Mac)
to C:\Windows\System32\drivers\etc\hosts (in case of Windows)
Even if you have multiple hosts defined in your global Homestead.yaml file.
For instance
folders:
- map: /Users/davidecasiraghi/Projects/my_laravel_project
to: /home/vagrant/code/my_laravel_project
- map: /Users/davidecasiraghi/Projects/spa
to: /home/vagrant/code/spa
sites:
- map: my_laravel_project.test
to: /home/vagrant/code/my_laravel_project/public
- map: spa.test
to: /home/vagrant/code/spa/public
Then in the host file:
192.168.10.10 spa.test
192.168.10.10 my_laravel_project.test
Then when you will do vagrant up you will be able to access to both of them.
For me this was related to Xdebug, which doesn't seem to yet be compatible with PHP 7.3.
To continue using 7.3, you can turn Xdebug off with
sudo phpdismod xdebug
restart php service
sudo service php7.3-fpm reload
For Chinese,
if you are using Clash for Windows,
then edit "Bypass Domain".
It's not relevant to this question,
but Google lead me here,
Do this inside your Homestead VM vagrant ssh
Check your php version
$ php -v
Edit your website config file
$ sudo nano /etc/nginx/sites-available/<laravel.app>
line
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
change according to your php version
mine was php8.2-fpm.sock; then I change it to php8.1-fpm.sock; press ctrl+x to save, then
$ sudo service nginx restart
$ sudo service php<ver>-fpm restart
reload the page

Laravel homestead: "No input file specified"

This is the output I get when entering my local site.
I'm using Windows and running Homestead with Vagrant on it. This is my homestead.yaml file:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: D:/web/laravel
to: /home/vagrant/code
sites:
- map: laravel.test
to: /home/vagrant/code/public
databases:
- laravel
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
As you see, I opted for a global homestead installation, in my user folder, mapping Laravel to a path in a secondary drive.
None of these solutions I found worked for me:
vagrant up --provision
vagrant provision
Any help appreciated!
My global Homestead installation did not work, but my per project installations are OK.
Per project set up is preferred; we are able to tweak each project independently if and when we need to.
I lost two weeks due to 'no iput file specified' (at global installation). Yet the per project process is easy.
The following video more than helped me: https://www.youtube.com/watch?v=rs2Hzx4qBm8
Further let me use terms "host" (the machine) and "guest" (Homestead virtual machine, VM).
This sure works as described with versions:
Ubuntu 18.04, Virtualbox 5.2.18, Vagrant 2.1.5, Composer 1.7.2 - host.
Laravel Homestead 7.17.0, Laravel Installer 2.0.1 (Laravel 5.7) - guest.
Have Vagrant, Virtual Box (you can install the two per https://laravel.com/docs/5.7/homestead), as well as Composer installed on the host,
cd where you wish to keep Laravel sites, then mkdir LaravelSites, cd LaravelSites and then
composer create-project --prefer-dist laravel/laravel petrTest (it takes time), to create the project (and add plenty packages), and then cd petrTest and ls to review it; I guess in this step I remember adding mbstring and perhaps one or two more packages per requests on terminal by hand (sudo apt install thePackage) for my first homestead project into my host,
composer require laravel/homestead --dev, to add homestead and yaml packages to the project,
vendor/bin/homestead, to run Homestead, so to install it into your project run vendor/bin/homestead make, and view your project (note you have just added Vagrantfile and mainly Homestead.yaml),
nano Homestead.yaml, review, and exit keeping it intact for your first project,
ssh-keygen -t rsa -C "madeUp#email.com", Enter, file (keep_suggested_file): Enter, Overwrite the current file?: y, passphrase: Enter, passphrase again: Enter,
vagrant up (it takes time and computing resources), then vagrant ssh to switch to your guest (VM), cd code, then ls; and in /home/vagrant/code of your guest you can see those same files that are in /home/petr/LaravelSites/petrTest of your host (the two directories are synced),
logout to leave the guest for the host, sudo nano /etc/hosts, then append 192.168.10.10 homestead.test to the bottom and make sure to Write Out the changes. Then in the browser: homestead.test, Enter. You should see the Laravel web.
Alternatively you can follow the nice and easy video, too.

Laravel Homestead (Windows)

Today I have been trying to install the Laravel library together with Laravel Homestead.. But I can't seem to get it working.
The first thing, Laravel documentation tells you to do: composer global require "laravel/homestead=~2.0", but it didn't work.
So I searched the internet some and found: composer global require "laravel/homestead=~3.0", which actually worked.
But now when I try to run the homestead command in my command line, it gives me this: http://prntscr.com/9perhj, that's the only thing it's giving me.
I have added the directory to my path variable.
I hope someone can help me.
Thanks in advance!
Homestead itself command will return this expected screen. You would need to pass the command you want to run.
At first, run homestead init so that it will create the Homestead.yaml configuration file
This is an old question but I thought I'd put up my answer since it took me multiple tries to get it right and I documented the process while I was doing it so I wouldn't have such a hard time in the future.
Note: You should NOT have NginX, PHP, MySQL, etc. installed on your machine. The Vagrant Homestead virtual box provides all of this functionality. I had some issues where I had NginX and MySQL on my machine and it was connecting to my local machine's MySQL when it should be connecting to the virtual box's MySQL.
Without further ado, this is how I set it up for my Windows 7 machine:
Prerequisites:
VirtualBox:
https://www.virtualbox.org/wiki/Downloads
Vagrant:
https://www.vagrantup.com/downloads.html
Git Bash: A terminal that feels like a Linux terminal. You can do everything you do on an Ubuntu server in Windows.
https://git-scm.com/downloads
Putty: Telnet client that I used for connecting to my VirtualBox Homestead server
http://www.putty.org/
create project folder
open terminal in project folder (something like E:\Projects\Vagrant)
type 'vagrant box add laravel/homestead'
type 'git clone https://github.com/laravel/homestead.git Homestead'
This installs Homestead in the designated project folder.
type 'cd Homestead'
type 'bash init.sh' OR 'init.bat'
This creates a folder in:
C:\Users\USERNAME\.homestead
which has the file:
Homestead.yaml
If you open the Homestead.yaml file it should look something like this:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
The '~/' folder is the equivalent of:
C:\Users\USERNAME\
Change:
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
To:
folders:
- map: E:/Projects/Vagrant/Homestead
to: /home/vagrant/Homestead
sites:
- map: WEBSITE.dev
to: /home/vagrant/Homestead/Laravel/public
goto C:\Windows\System32\drivers\etc
open the file 'hosts' in a text editor
add '192.168.10.10 WEBSITE.dev' (the IP address should match the IP address in the Homestead.yaml file)
open a terminal in E:/Projects/Vagrant/Homestead folder
type 'ssh-keygen -t rsa -C "USERNAME#gmail.com"'
This creates the folder C:\Users\USERNAME.ssh and sets up your SSH Key
type 'vagrant init laravel/homestead'
type 'vagrant up'
You should see Homestead running in VirtualBox
You can use 'vagrant destroy' to kill it when done
Use putty.exe to log in to Homestead
IP Address: 127.0.0.1
Port: 2222
login as: vagrant
password: vagrant
Everything is now ready

After installing Homestead I get "No input file specified" in the browser. How can I access my laravel project

I think I finally got homestead installed on my laptop! Now, I am trying to view my laravel project in the browser.
When I open "dev.app" in the browser I get a message that say "No input file specified." which I think means that my homestead is working but the laravel project is not there/setup.
I have created a folder called Projects on my local laptop (i.e. ~/Projects). Then from inside of it i executed this command
laravel new dev
But I still get the same error message in the browser i.e. "No input file specified." I have also tried to open this link "dev.app"/dev" but I still get the same message.
What I am doing wrong?
Here is the content of my Homestead.yaml file
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Projects
to: /home/vagrant/Code
sites:
- map: dev.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
variables:
- key: APP_ENV
value: local
Additional, when I execute the following 2 commands in order
cd ~/Projects
ls
I see the following directories dev homestead
What should I do to see my project when I go to dev.app ? Do I need to do anything from my Ubuntu VM or I should be able to edit the files directly in located on ~\Projects\dev" from my laptop?
Add an entry in /etc/hosts on your local machine
192.168.10.10 dev.app
Correct the path to the public folder in the sites section of your Homestead.yaml
sites:
- map: dev.app
to: /home/vagrant/Code/dev/public

Laravel working but files missing in mapped directory from homestead

I have just made the following Homestead.yaml file:
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/GIT/old-project
to: /home/vagrant/old-project
- map: ~/GIT/project
to: /home/vagrant/project
sites:
- map: old-project.app
to: /home/vagrant/old-project/public
- map: project.app
to: /home/vagrant/project/public
databases:
- name: old-project
- name: project
variables:
- key: APP_ENV
value: local
old-project already existed. Next I ran vagrant up, then vagrant ssh then inside the vagrant box I ran composer create-project laravel/laravel project 4.2 --prefer-dist. Laravel installed. I edited my /etc/hosts file and now project.app leads me to the Laravel 'You have arrived' page. Great – everything works.
But on my mac, the folder ~/GIT/project is empty.
What part of the installation process did I miss? Is there anything I've done wrong that has prevented the files from mapping across correctly?
If I open ~/GIT/old-project all the Laravel files are there, and it works as I'd expect. I can't remember any difference in how I set up that project.
I guess you should run the vagrant provision command, to make the added directory (~/GIT/project) shared with the homestead.
When you run the command vagrant up for the first time, the directory ~/GIT/old-project became shared with the homestead. However the directory ~/GIT/project is not shared therefore it is empty on your mac.
Note: When running the provision command, your existing databases will be destroyed and recreated.

Resources