Start using a real web server and set file permissions for development in Vagrant.We'll install a web server and see how it interacts with Vagrant.
# Startup and log into Vagrant server
vagrant up
vagrant ssh
# From within the Sagrant server,
Install Apache & PHP
sudo apt-get install -y apache2 libapache2-mod-php5 php5-cli
Edit the PHP configuration to turn on error reporting:
sudo vim /etc/php5/apache2/php.ini
Make the following directives uncommented and to the following values:
error_reporting = E_ALL
display_errors = on
date.timezone = UTC
Save that and then reload Apache:
sudo service apache2 reload
Add an index.php
file for Apache to serve out of its default location /var/www/html
:
sudo vim /var/www/html/index.php
Add the following:
<?php
file_put_contents('/vagrant/writeout.txt', 'Hello, World!');
Save that and head to https://localhost:8080/index.php
in your browser. You should see an error stating that the file /vagrant/writeout.txt
could not be written to.
To fix that, we need Apache to run PHP as the "vagrant" user, so it has permission to write to the /vagrant
location.
sudo vim /etc/apache2/envvars
Change Apache runs as user/group "vagrant" instead of "www-data":
export APACHE_RUN_USER=vagrant
export APACHE_RUN_GROUP=vagrant
Then restart (not reload) Apache:
sudo service apache2 restart
Run the https://localhost:8080/index.php
URL again and see that we don't get an error and it writes to the /vagrant/writeout.txt
file!