apache - Unable to create the cache directory (/vagrant/app/cache/dev) -
i using vagrant tool, below version number of os , tools using.
ubuntu : 13.04
vagrant : vagrant 1.5.1
vm box : 4.2.10_ubuntur84101
below vagrant file content
# -*- mode: ruby -*- # vi: set ft=ruby : # vagrantfile api/syntax version. don't touch unless know you're doing! vagrantfile_api_version = "2" vagrant.configure(vagrantfile_api_version) |config| # vagrant configuration done here. common configuration # options documented , commented below. complete reference, # please see online documentation @ vagrantup.com. # every vagrant virtual environment requires box build off of. config.vm.box = "hashicorp/precise32" config.vm.provision :shell, :path => "getmyltd_bootstrap.sh" config.vm.network :forwarded_port, host: 4567, guest: 80 # url 'config.vm.box' box fetched if # doesn't exist on user's system. # config.vm.box_url = "http://domain.com/path/to/above.box" # create forwarded port mapping allows access specific port # within machine port on host machine. in example below, # accessing "localhost:8080" access port 80 on guest machine. # config.vm.network "forwarded_port", guest: 80, host: 8080 # create private network, allows host-only access machine # using specific ip. # config.vm.network "private_network", ip: "192.168.33.10" # create public network, matched bridged network. # bridged networks make machine appear physical device on # network. # config.vm.network "public_network" # if true, ssh connections made enable agent forwarding. # default value: false # config.ssh.forward_agent = true # share additional folder guest vm. first argument # path on host actual folder. second argument # path on guest mount folder. , optional third # argument set of non-required options. # config.vm.synced_folder "../data", "/vagrant_data" ) # provider-specific configuration can fine-tune various # backing providers vagrant. these expose provider-specific options. # example virtualbox: # # config.vm.provider "virtualbox" |vb| # # don't boot headless mode # vb.gui = true # # # use vboxmanage customize vm. example change memory: # vb.customize ["modifyvm", :id, "--memory", "1024"] # end # # view documentation provider you're using more # information on available options. # enable provisioning puppet stand alone. puppet manifests # contained in directory path relative vagrantfile. # need create manifests directory , manifest in # file hashicorp/precise32.pp in manifests_path directory. # # example puppet manifest provision message of day: # # # group { "puppet": # # ensure => "present", # # } # # # # file { owner => 0, group => 0, mode => 0644 } # # # # file { '/etc/motd': # # content => "welcome vagrant-built virtual machine! # # managed puppet.\n" # # } # # config.vm.provision "puppet" |puppet| # puppet.manifests_path = "manifests" # puppet.manifest_file = "site.pp" # end # enable provisioning chef solo, specifying cookbooks path, roles # path, , data_bags path (all relative vagrantfile), , adding # recipes and/or roles. # # config.vm.provision "chef_solo" |chef| # chef.cookbooks_path = "../my-recipes/cookbooks" # chef.roles_path = "../my-recipes/roles" # chef.data_bags_path = "../my-recipes/data_bags" # chef.add_recipe "mysql" # chef.add_role "web" # # # may specify custom json attributes: # chef.json = { :mysql_password => "foo" } # end # enable provisioning chef server, specifying chef server url, # , path validation key (relative vagrantfile). # # opscode platform uses https. substitute organization # orgname in url , validation key. # # if have own chef server, use appropriate url, may # http instead of https depending on configuration. change # validation key validation.pem. # # config.vm.provision "chef_client" |chef| # chef.chef_server_url = "https://api.opscode.com/organizations/orgname" # chef.validation_key_path = "orgname-validator.pem" # end # # if you're using opscode platform, validator client # orgname-validator, replacing orgname organization name. # # if have own chef server, default validation client name # chef-validator, unless changed configuration. # # chef.validation_client_name = "orgname-validator" end vagrant commands works fine without errors. , enables port number 4567 successfully.
in local machine have virtual host, content of below.
<virtualhost *:80> serveradmin webmaster@localhost servername *.testmyltd.com serveralias admin.testmyltd.com documentroot /var/www/getmyltd/web <directory /> options followsymlinks allowoverride none </directory> <directory /var/www/> options indexes followsymlinks multiviews allowoverride none order allow,deny allow </directory> scriptalias /cgi-bin/ /usr/lib/cgi-bin/ <directory "/usr/lib/cgi-bin"> allowoverride none options +execcgi -multiviews +symlinksifownermatch order allow,deny allow </directory> errorlog ${apache_log_dir}/error.log # possible values include: debug, info, notice, warn, error, crit, # alert, emerg. loglevel warn customlog ${apache_log_dir}/access.log combined </virtualhost> <virtualhost *:4567> serveradmin webmaster@localhost servername *.testmyltd.com:4567 serveralias admin.testmyltd.com:4567 documentroot /var/www/getmyltd/web <directory /> options followsymlinks allowoverride none </directory> <directory /var/www/> options indexes followsymlinks multiviews allowoverride order allow,deny allow </directory> scriptalias /cgi-bin/ /usr/lib/cgi-bin/ <directory "/usr/lib/cgi-bin"> allowoverride none options +execcgi -multiviews +symlinksifownermatch order allow,deny allow </directory> errorlog ${apache_log_dir}/error.log # possible values include: debug, info, notice, warn, error, crit, # alert, emerg. loglevel warn customlog ${apache_log_dir}/access.log combined </virtualhost> hitting urls http://admin.testmyltd.com:4567/app_dev.php , http://admin.testmyltd.com/ loads project directory structure in browser,

trying run project through port 4567 (http://admin.testmyltd.com:4567/app_dev.php) throws run time exception :
runtimeexception: failed write cache file "/vagrant/app/cache/dev/classes.php". full permission set "vagrant" directory in guest os , project directory in host os along files , sub directories inside that.
can tell me things went wrong ?
thanks in advance.
as per discussion had, can problem permission user.
following scenario.
your host os running under user pc-16, , /var/www directory having ownership of pc-16 user itself. default under ubuntu/debian apache running www-data user mode. first change run pc-16 (i'l tell later why need that)
in host os:
changing user of apache under host os user.
$sudo vi /etc/apache2/envvars and change
export apache_run_user=www-data export apache_run_group=www-data to,
export apache_run_user=pc-16 export apache_run_group=pc-16 and restart apache2,
$sudo service apache2 restart it may give error regarding /var/lock/apache2 directory, in case change ownership of /var/lock/apache2 pc-16 user.
$sudo down pc-16:pc-16 /var/lock/apache2 and restart apache2,
$sudo service apache2 restart also make sure /var/www/virtualhost-directory/app/ writable. if it's not, change permission host-os terminal.
$sudo chmod 777 /var/www/virtualhost-directory/app running $vagrant up run virtualbox guest machine pc-16 user mode, , have privileges of user pc-16
the problem is, apache in host-os running under www-data user mode, , web-application trying create directory/files under /var/www/, have changed work pc-16 user.
now, in vagrant box, run user vagrant , shared directory of host come vagrant user ownership only, (with few limitations can't change ownership of shared files guest os). so, need change apache user of guest os vagrant.
follow same steps described host-os apache.
in guest os:
changing user of apache under guest os vagrant.
$sudo vi /etc/apache2/envvars and change
export apache_run_user=www-data export apache_run_group=www-data to,
export apache_run_user=vagrant export apache_run_group=vagrant and restart apache2,
$sudo service apache2 restart in case locking directory ownership error.
$sudo chown vagrant:vagrant /var/lock/apache2 and restart apache2,
$sudo service apache2 restart now should able access web-application host-os like,
http://admin.testmyltd.com/ <-- run project local directory http://admin.testmyltd.com:4567/app_dev.php <-- run same project vagrant box (shared project directory)
Comments
Post a Comment