Wednesday, November 7, 2012

Deploying a facebook php app locally on Linux

As in my previous post I said that currently I am having a tryst with Facebook apps. Going further I thought of setting up a local environment where I could make changes locally and see them without uploading on heroku website. I find lots of issues which finally got resolved thanks to generous guys on internet. Following their path I am sharing the complete list of instructions I followed to deploy the Facebook app locally here.

First of all you need to create an app on facebook and host it on heroku website following instructions from following link.

Please bear in mind that I chose to deploy the main app locally rather than creating a dev app.

If you find any problem related to ssh keys these commands may help you as they did for me.

 # ssh -vT  

Above command checks whether a secure connections with heroku site is possible or not. If you get any errors try generating a ssh key and submitting it to heroku.

 # ssh-keygen  
 # heroku keys:add ~/.ssh/  

Follow my previous post to create virtual hosts, also don't forget to set facebook app id and app secret in "/etc/apache2/conf/extra/httpd-vhosts.conf" file under VirtualHost tag as below. You can these two from Facebook app site.

 <VirtualHost *:80>  
   DocumentRoot /home/ashish/savefromiad/xxxxxxxxxxxx  
   ServerName mycoolapp-dev.localhost  
   SetEnv FACEBOOK_APP_ID xxxxxxxxxxxxxxxxxx  
   SetEnv FACEBOOK_SECRET xxxxxxxxxxxxxxxxxxxxxxxxxxxxx  

When I tried accessing the virtual site I got a blank page. I tried searching on internet and got this error in apache error.log at "/var/log/apache2/error.log".

 PHP Warning: require_once(sdk/src/facebook.php): failed to open stream: No such file or directory  

When checked the app directory I found that the php sdk was missing so I got that from their git repository.

and copied that under src/sdk of my app local directory.

Still I kept getting permission error so I changed the owner of the directory to www-data as below.

 # chown -R www-data .  

So the permission error vanished, please bear in mind that may have further repercussions but for now things worked for me. I got this help while setting up Joomla! locally so applied this here as well.

But the errors kept coming, this time like this one.

 Uncaught exception 'Exception' with message 'Facebook needs the CURL PHP extension.  

So checked the php manual and from user notes installed curl and php extension as below.

 # sudo apt-get install curl libcurl3 libcurl3-dev php5-curl  

Even after this it didn't worked so I restarted my laptop and lo!!! it worked.

Later I noticed that this local running is not same as on heroku.Will see how to resolve and add.
Update 2:
In the mean time you could try heroku eclipse plugin It greatly eases the change, commit, and test phases. Off course you would be running your actual master code

Thanks for reading and thanks to guys for helping me out. Please don't forget to share if you find this helpful.


  1. It is such an important topic and ignored by so many, even professionals. I thank you to help making people more aware of possible issues.
    Way2sms login

  2. lot of information on your article....great article...i hope in short time we will get latest updates