How do I set up phpMyAdmin on a Laravel Homestead box?

NginxLaravelLaravel 4Phpmyadmin

Nginx Problem Overview


I installed it by running sudo apt-get install phpymyadmin and then running

sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html and sudo service nginx restart

but it's not working.

Note: I didn't select any of the apache2 or lighttpd options when installing.

Nginx Solutions


Solution 1 - Nginx

Option 1:

This will install the latest version of PhpMyAdmin from a shell script I've written. You are welcome to check it out on Github.

  1. Run the following command from your code/projects directory:

     curl -sS https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh | bash
    

Option 2:

This will install PhpMyAdmin (not the latest version) from Ubuntu's repositories. Assuming that your projects live in /home/vagrant/Code :

  1. sudo apt-get install phpmyadmin Do not select apache2 nor lighttpd when prompted. Just hit tab and enter.

  2. sudo ln -s /usr/share/phpmyadmin/ /home/vagrant/code/phpmyadmin

  3. cd ~/Code && serve phpmyadmin.test /home/vagrant/code/phpmyadmin

Note: If you encounter issues creating the symbolic link on step 2, try the first option or see Lyndon Watkins' answer below.

Final steps:

  1. Open the /etc/hosts file on your main machine and add:

     127.0.0.1  phpmyadmin.test
    
  2. Go to http://phpmyadmin.test:8000

Solution 2 - Nginx

Step 1:

Go to the phpMyAdmin website, download the latest version and unzip it into your code directory

Step 2:

Open up homestead.yaml file and add these lines

folders:
    - map: /Users/{yourName}/Code/phpMyAdmin
      to: /home/vagrant/Code/phpMyAdmin
sites:
    - map: phpmyadmin.test
      to: /home/vagrant/Code/phpMyAdmin

Step 3:

Open your hosts file and add this line:

127.0.0.1 phpmyadmin.test

Step 4:

You may need to run vagrant provision to load the new configuration if vagrant is already running.


Thats it

Go to http://phpmyadmin.test:8000. It should work from there. Great thing about this method is that if you ever need to destroy your box, you won't ever have to set up phpMyAdmin again so long as you keep your homestead.yaml file and phpMyAdmin in your code directory.

===========

Important update from DaneSoul:

I tried this instruction on Homestead 5.3 and have met a problem "No input file specified" when trying open http://phpmyadmin.test.

And finnaly I found solution:

You need unpack phpmyadmin to

/home/vagrant/Code/phpMyAdmin/public

And write in homestead.yaml

- map: phpmyadmin.test
  to: /home/vagrant/Code/phpMyAdmin/public

So almost all the same, but this /public directory in paths makes it working!

Also, in my configuration I use http://phpmyadmin.test, not http://phpmyadmin.test:8000.

Update Note: Follow this article to change your domain extension.

Solution 3 - Nginx

The answer from Nikos Gr worked for me; however I needed to amend steps 2 and 3 as my host system has issues creating the symlink.

I changed:

sudo ln -s /usr/share/phpmyadmin/ /home/vagrant/Code/phpmyadmin
cd ~/Code && serve phpmyadmin.app /home/vagrant/Code/phpmyadmin

To:

cd ~/Code && serve phpmyadmin.app /usr/share/phpmyadmin/

(Couldn't comment on the original solution as my rep isn't high enough!)

Solution 4 - Nginx

A simplified version of Jyeon's Answer. You don't need to share the ~/Code folder in the Homestead.yaml file:

folders:
    - map: /Users/{yourName}/Code/phpMyAdmin
      to: /home/vagrant/Code/phpMyAdmin

Just download the latest version of PhpMyAdmin from PhpMyAdmin and put the unzipped file in the ~/Code/phpMyAdmin folder and just follow the 2 step here:

Step 1: Open up homestead.yaml file and add these lines

sites: - map: phpmyadmin.app to: /home/vagrant/Code/phpMyAdmin

Step 3: Open up your hosts file and add this line:

192.168.10.10 phpmyadmin.app

Now run the vagrant reload --provision command and you're good to go.

Open up the phpmyadmin.app address in your browser and you'll see the phpmyadmin interface.

Solution 5 - Nginx

Install phpMyAdmin

  • SSH into Homestead vagrant box with vagrant ssh and type the following command:

      sudo apt-get install phpmyadmin
    
  • When prompted to select the Web server, select apache2 and press Enter, just to get pass it.

  • When prompted to config database for phpmyadmin with dbconfig-common, select Yes and press Enter.

  • When prompted for Password of the database's administrative user, enter secret and press Enter.

  • When prompted for MySQL application password for phpmyadmin, enter secret and press Enter.

  • When prompted for Password confirmation, enter secret again and press Enter.

Then Create and config site for Nginx

sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin

cd /etc/nginx/sites-available
sudo cp homestead.app phpmyadmin.app

sudo sed -i 's/homestead.app/phpmyadmin.app/g' /etc/nginx/sites-available/phpmyadmin.app
sudo sed -i 's/home\/vagrant\/Code\/Laravel\/public/usr\/share\/nginx\/html\/phpmyadmin/g' /etc/nginx/sites-available/phpmyadmin.app

sudo ln -s /etc/nginx/sites-available/phpmyadmin.app /etc/nginx/sites-enabled/phpmyadmin.app
sudo service nginx restart
sudo service php5-fpm retart

Adding phpMyAdmin.app to your hosts file

 127.0.0.1   phpmyadmin.app

Navigate to http://phpmyadmin.app:8000 and you should now see phpMyAdmin login page.

More info available here if you need it

Solution 6 - Nginx

A variation on Nikos Gr's answer that seemed a bit simpler (in that it doesn't require a new symbolic link for each project on your Homestead box) and worked for me.

  1. Inside the Homestead box, run sudo apt-get install phpmyadmin. Don't select any of the options during install.

  2. On your host machine, add the following lines to your Homestead.yaml file:

    - map: phpmyadmin.dev to: /usr/share/phpmyadmin

  3. On your host machine, add the following line to your hosts file:

    192.168.10.10 phpmyadmin.dev

...and Homestead's phpMyAdmin will be available at phpmyadmin.dev

Solution 7 - Nginx

You can install phpmyadmin automatically when you vagrant up or provision your homestead by adding the following snippet to your Homestead\scripts\homestead.rb file after # Update Composer On Every Provision

# Install phpMyAdmin on every provision
    config.vm.provision "shell" do |s|
      s.inline = "curl -sS https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh | sh"
    end

Your hoomestead.rb file should now look somehow like this

class Homestead
  def Homestead.configure(config, settings)
    # Configure The Box
    config.vm.box = "laravel/homestead"
    config.vm.hostname = "homestead"

    # Configure A Private Network IP
    config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

    

some other entries are truncated to keep this short

    # Update Composer On Every Provision
    config.vm.provision "shell" do |s|
      s.inline = "/usr/local/bin/composer self-update"
    end

    # Install phpMyAdmin on every provision
    config.vm.provision "shell" do |s|
      s.inline = "curl -sS https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh | sh"
    end

    # Configure Blackfire.io
    if settings.has_key?("blackfire")
      config.vm.provision "shell" do |s|
        s.path = "./scripts/blackfire.sh"
        s.args = [settings["blackfire"][0]["id"], settings["blackfire"][0]["token"]]
      end
    end
  end
end

Save file and run vagrant destroy then vagrant up or just vagrant reload

NB: This uses Nikos Gr script located here https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh

Solution 8 - Nginx

Finally it worked for me, few things I had to fix:

Homestead.yaml file:

- map: phpmyadmin.test
  to: /home/vagrant/code/phpmyadmin/

I had to delete /public from the end. I installed phpmyadmin (after vagrant ssh command from Homestead directory) into the 'code' folder where the other projects are. When 'code' is with lowercase, it has to be everywhere so (or other way around): folder name, yaml file or even after installation performing these commands:

sudo ln -s /usr/share/phpmyadmin/ /home/vagrant/code/phpmyadmin
cd ~/code && serve phpmyadmin.test /home/vagrant/code/phpmyadmin

Solution 9 - Nginx

This is the most simple solution. No mapping and all needed.

  1. Download latest phpmyadmin version from here https://www.phpmyadmin.net/downloads

  2. Make a folder named phpmyadmin inside your main root/public folder and unzip phpmyadmin here.

  3. Run yourwebsite.com/phpmyadmin

Solution 10 - Nginx

I am writing here the way I followed to make my local vagrant environment work-friendly.

Step 1 - Start the vagrant and login

vagrant up 
vagrant ssh

Step 2 - Go to your correct directory. (Depends on your file tree)

cd <VagrantDirectory>

Step 3 - Install phpmyadmin.

curl -sS https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh | bash

Step 4 - Configure the Homestead.yaml

map: phpmyadmin.test
to: /home/vagrant/<VagrantDirectory>/phpmyadmin

Step 5 - Reload the vagrant.

vagrant reload

Step 6 - Configure phpmyadmin

Go to your phpmyadmin directory. Copy config.sample.inc.php to config.inc.php

cp config.sample.inc.php config.inc.php

Step 7 - Edit config.inc.php with your text editor and place your new configuration there.

//Comment out the old configuration that was already here.
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['host'] = 'localhost'; // Also works with the IP address.
$cfg['Servers'][$i]['user'] = 'homestead'; // Username of MySQL, Default is homestead.
$cfg['Servers'][$i]['password'] = 'secret'; // Password. Default password is secret
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['CheckConfigurationPermissions'] = false; // Since you are on local, Leave this false.

Step 8 - Now browse your fresh PHPMyAdmin on your favorite browser.

http://phpmyadmin.test

Solution 11 - Nginx

For another alternative that I found super simple and that worked right out of the box I set up a new Nginx site from inside the Homestead box using the serve.sh script:

serve adminer.app /home/vagrant/Code/adminer/

And then in there I dropped the one page successor to phpmyadmin, Adminer. I also renamed it to "index.php" to make it just work. Then after adding the adminer.app entry to my hosts file I was good to go.

Had not used a web based MySQL interface in years since I just didn't like maintaining phpMyAdmin but this one is sweet. One file (plus an optional CSS file if you want a nicer theme) and that is all. Easy to maintain and update.

Solution 12 - Nginx

In my case accepted solution works ok except:

$ cd ~/Code && serve phpmyadmin.app /home/vagrant/Code/phpmyadmin
dos2unix: converting file /vagrant/scripts/serve.sh to Unix format ...
 * Restarting nginx nginx                                                                                                                            [fail] 
php5-fpm stop/waiting
php5-fpm start/running, process 4112

For an unknown reason serve command files creating configuration file as seen in:

$ sudo tail -f /var/log/nginx/error.log 
2015/03/18 11:54:16 [emerg] 3671#0: invalid number of arguments in "listen" directive in /etc/nginx/sites-enabled/phpmyadmin.app:2

Edit config:

$ editor /etc/nginx/sites-enabled/phpmyadmin.app

and add 80 to Listen directive at line 2. Apply changes with:

$ sudo service nginx reload

Solution 13 - Nginx

As I couldn't comment on the Jyeon solution as my rep isn't high enough, I contribute with this answer; worked for me in Linux (openSUSE Leap) with Vagrant 1.8.1 and laravel/homestead (virtualbox, 0.4.0):

Step 1:

Go to phpMyAdmin website, download the latest version and unzip it into your project directory.

Step 2:

Add to your Homestead.yaml file the following lines:

folders:
    - map: ~/Code/phpMyAdmin
      to: /home/vagrant/Code/phpMyAdmin

Sites:
    - map: phpmyadmin.app
      to: /home/vagrant/Code/phpMyAdmin

Step 3:

Add to your hosts file the following line:

192.168.10.10   phpmyadmin.app

Step 4:

After start your vagrant environment and connects to machine via SSH, set your virtual host to work with phpMyAdmin with the command serve:

cd ~/Code
serve phpmyadmin.app /home/vagrant/Code/phpMyAdmin/

Thats it!

Go to http://phpmyadmin.app it should work, and you can login with your user and password homestead default. The great thing about this method is that you can set up your phpmyadmin so long as you keep it in your Homestead.yaml file and phpMyAdmin in your Code directory.

Solution 14 - Nginx

adminer index file is located in adminer/adminer so try :

serve adminer.app /home/vagrant/Code/adminer/adminer

Solution 15 - Nginx

I installed phpMyAdmin from here

then put these settings in config.inc.php:

/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '33060';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

and opened via Apache (I had a xampp). In my case i placed phpMyAdmin in D:\xampp\htdocs\pma which allowed me to open at localhost/pma url.

Everything worked!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNikos GrigoriadisView Question on Stackoverflow
Solution 1 - NginxNikos GrigoriadisView Answer on Stackoverflow
Solution 2 - NginxJeffView Answer on Stackoverflow
Solution 3 - NginxLyndon WatkinsView Answer on Stackoverflow
Solution 4 - NginxasmmahmudView Answer on Stackoverflow
Solution 5 - NginxLaurenceView Answer on Stackoverflow
Solution 6 - NginxNick FView Answer on Stackoverflow
Solution 7 - NginxEmeka MbahView Answer on Stackoverflow
Solution 8 - NginxGregTaylorView Answer on Stackoverflow
Solution 9 - NginxSahil JainView Answer on Stackoverflow
Solution 10 - NginxDisapamokView Answer on Stackoverflow
Solution 11 - NginxnoeldiazView Answer on Stackoverflow
Solution 12 - NginxSergi Tur BadenasView Answer on Stackoverflow
Solution 13 - NginxJosé RodríguezView Answer on Stackoverflow
Solution 14 - NginxYaroslav GrishajevView Answer on Stackoverflow
Solution 15 - NginxИлья ЗеленькоView Answer on Stackoverflow