


Tutorial on using Vagrant to build a PHP development environment
Jun 28, 2025 am 02:22 AMThis article explains how to set up a PHP development environment using Vagrant. 1. Install VirtualBox and Vagrant, then initialize a Vagrantfile with a base box like bento/ubuntu-20.04. 2. Configure the Vagrantfile with private IP, synced folders, and forwarded ports. 3. Start the VM with vagrant up and install PHP, extensions, Composer, and a web server like Apache or Nginx. 4. Use synced folders for seamless code editing and manage permissions carefully. 5. Access the app via port forwarding in a browser. 6. Automate setup with a bootstrap.sh script and version control the configuration files for reusability.
Starting a PHP development environment doesn’t have to mean messing with XAMPP or MAMP every time. Vagrant offers a cleaner, more consistent way to build and manage dev environments. It’s not just for teams — solo developers benefit too.

Here's how you can set up a solid PHP dev environment using Vagrant.

Set up your base box and Vagrantfile
First, make sure VirtualBox and Vagrant are installed on your machine. Once that’s done, pick a base box that already has PHP support or is close enough. bento/ubuntu-20.04
is a good starting point.
Create a new folder for your project and run:

vagrant init bento/ubuntu-20.04
This creates a Vagrantfile
. Open it in your editor and configure the basics like private IP, synced folders, and forwarded ports.
Example config snippet:
config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder "./www", "/var/www/html" config.vm.network "forwarded_port", guest: 80, host: 8080
Save and exit. Then run:
vagrant up
Now your virtual machine starts booting based on this setup.
Install PHP and related tools inside the VM
Once the VM is up, log into it:
vagrant ssh
Update the package list:
sudo apt update
Then install PHP along with common extensions needed for most PHP projects:
sudo apt install php php-cli php-mysql php-curl php-gd php-mbstring php-zip
If you're using a framework like Laravel, Composer will also be needed:
sudo apt install composer
You may want to install a web server like Apache or Nginx. For example:
sudo apt install apache2
Your PHP site files go in /var/www/html
, thanks to the synced folder we set earlier.
Use shared folders and port forwarding effectively
One of Vagrant’s biggest strengths is synced folders. You work on your host machine (your laptop), and changes automatically show up inside the VM. That makes editing code easy with your favorite IDE or editor.
But here's something people often miss: file permissions. If you’re running into permission issues when writing files from PHP (like uploads or cache), check the user/group settings in your Vagrantfile or adjust ownership inside the VM.
Port forwarding lets you access the site without switching networks or dealing with complex browser configs. So if you mapped port 80 to 8080, open your browser and visit:
http://localhost:8080
You’ll see your PHP app running as expected.
Keep your environment clean and reusable
Don’t just stop at manual setup. Use a provision script (bootstrap.sh
) to automate installing dependencies and configuring services. Add this to your Vagrantfile:
config.vm.provision "shell", path: "bootstrap.sh"
In that script, put all the commands you ran earlier — updates, PHP install, etc. This makes it easy to destroy and recreate the environment later without redoing everything by hand.
Also, remember to version control your Vagrantfile and bootstrap scripts. That way, anyone else (or even future-you) can spin up the same exact environment in minutes.
That’s basically it. It takes a bit of setup upfront, but once it’s there, working with PHP in Vagrant becomes smooth and repeatable.
The above is the detailed content of Tutorial on using Vagrant to build a PHP development environment. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Common problems and solutions for PHP variable scope include: 1. The global variable cannot be accessed within the function, and it needs to be passed in using the global keyword or parameter; 2. The static variable is declared with static, and it is only initialized once and the value is maintained between multiple calls; 3. Hyperglobal variables such as $_GET and $_POST can be used directly in any scope, but you need to pay attention to safe filtering; 4. Anonymous functions need to introduce parent scope variables through the use keyword, and when modifying external variables, you need to pass a reference. Mastering these rules can help avoid errors and improve code stability.

To safely handle PHP file uploads, you need to verify the source and type, control the file name and path, set server restrictions, and process media files twice. 1. Verify the upload source to prevent CSRF through token and detect the real MIME type through finfo_file using whitelist control; 2. Rename the file to a random string and determine the extension to store it in a non-Web directory according to the detection type; 3. PHP configuration limits the upload size and temporary directory Nginx/Apache prohibits access to the upload directory; 4. The GD library resaves the pictures to clear potential malicious data.

There are three common methods for PHP comment code: 1. Use // or # to block one line of code, and it is recommended to use //; 2. Use /.../ to wrap code blocks with multiple lines, which cannot be nested but can be crossed; 3. Combination skills comments such as using /if(){}/ to control logic blocks, or to improve efficiency with editor shortcut keys, you should pay attention to closing symbols and avoid nesting when using them.

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

The key to writing PHP comments is to clarify the purpose and specifications. Comments should explain "why" rather than "what was done", avoiding redundancy or too simplicity. 1. Use a unified format, such as docblock (/*/) for class and method descriptions to improve readability and tool compatibility; 2. Emphasize the reasons behind the logic, such as why JS jumps need to be output manually; 3. Add an overview description before complex code, describe the process in steps, and help understand the overall idea; 4. Use TODO and FIXME rationally to mark to-do items and problems to facilitate subsequent tracking and collaboration. Good annotations can reduce communication costs and improve code maintenance efficiency.

In PHP, you can use square brackets or curly braces to obtain string specific index characters, but square brackets are recommended; the index starts from 0, and the access outside the range returns a null value and cannot be assigned a value; mb_substr is required to handle multi-byte characters. For example: $str="hello";echo$str[0]; output h; and Chinese characters such as mb_substr($str,1,1) need to obtain the correct result; in actual applications, the length of the string should be checked before looping, dynamic strings need to be verified for validity, and multilingual projects recommend using multi-byte security functions uniformly.

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

TolearnPHPeffectively,startbysettingupalocalserverenvironmentusingtoolslikeXAMPPandacodeeditorlikeVSCode.1)InstallXAMPPforApache,MySQL,andPHP.2)Useacodeeditorforsyntaxsupport.3)TestyoursetupwithasimplePHPfile.Next,learnPHPbasicsincludingvariables,ech
