Skip to main content

Installing PhalconPHP in Ubuntu 13.10 / 14.04



Here's how I install PhalconPHP

On Linux you can easily compile and install the extension from source code.

Requirements

We need some packages previously installed:

LAMP
PHP 5.x development resources
GCC compiler

                     sudo apt-get install php5-dev php5-mysql gcc

Compilation

1. To create the extension from C source follow these steps:
If you dont have git installed you can install it with this command

sudo apt-get install git
                   git clone --depth=1 git://github.com/phalcon/cphalcon.git
                   cd cphalcon/build
                   sudo ./install


It gives me error:

          In file included from /usr/include/php5/ext/spl/spl_iterators.h:27:0,
                                   from /home/sherwinrobles/Applications/cphalcon/build/32bits/phalcon.c:204:
          /usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h: No such file or directory
          #include "pcre.h"

The solution :

        The latest version of Phalcon uses PCRE libraries.
        You can install them like so and then try and install Phalcon again:

sudo apt-get install libpcre3-dev


2. Add the extension to your 2 php.ini:

         Find loaded php.ini with these commands

                sudo php -i | grep 'Configuration File'

                Configuration File (php.ini) Path => /etc/php5/cli
                Loaded Configuration File => /etc/php5/cli/php.ini

/etc/php5/cli/php.ini is for the CLI PHP program, which you found by running php on the terminal.
/etc/php5/apache2/php.ini is for the PHP plugin used by Apache.

To open your php.ini:

               sudo gedit /etc/php5/cli/php.ini
               sudo gedit /etc/php5/apache2/php.ini
     
In PhalconPHP 1.3.1 Instead in php.ini it looks for phalcon extension here /etc/php5/cli/conf.d/ & /etc/php5/apache2/conf.d/

You need to load PDO first before Phalcon.
The ini file that loads phalcon should be prefixed to a number higher than the one PDO is. So here you should add phalcon extension:
          sudo gedit /etc/php5/cli/conf.d/50-phalcon.ini 
         sudo gedit /etc/php5/apache2/conf.d/50-phalcon.ini 


paste this:

               extension=phalcon.so  




3. Finally, restart the webserver

               sudo service apache2 restart

Post a Comment

Popular posts from this blog

CakeAdminLTE is based on AdminLTE Theme for CakePHP 2.4+

CakeAdminLTE v.1.0 CakeAdminLTE is based on Twitter Bootstrap 3.0+ and AdminLTE Theme for CakePHP 2.4+


AdminLTE Dashboard and Control Panel Template  Responsive admin template Free & open source Built with Bootstrap 3 Easy to customize Quick StartDownload the .zip fileExtract the files into your CakePHP folderTo enable your theme add the following to your "app/Controller/AppController.php" class:public$theme="CakeAdminLTE"; IMPORTANT: If you would like to bake your app, please make sure you have enabled the theme before baking. DOWNLOAD: CakeAdminLTE

CakePHP: COUNT data and GROUP BY date

Goal: Count Tip Offs created per day for a month to use for graph
Problem: created field name is in datetime format: Y-m-d H:i:s
Solution: format SQL Query date: DATE_FORMAT(TipOff.created, '%Y-%m-%d')





Inside the function of controller
<?php$tipOffsMonthly=$this->TipOff->find('all', array('conditions'=>array('AND'=>array('TipOff.electric_cooperatives_id'=>AuthComponent::User('electric_cooperatives_id'), 'TipOff.created BETWEEN ? AND ?'=>array($first_day, $last_day))), 'fields'=>array("COUNT('created') as per_day", 'created'), 'group'=>array("DATE_FORMAT(TipOff.created, '%Y-%m-%d')") ));?>

CakePHP: Calling function from other controller

Import Controller of the function you want to use.

Once you imported  the controller you can call any function of this controller.

<?php//Import controller  App::import('Controller','SmsOutgoings');class ReportsController extends AppController {publicfunctionadd(){$message="Notification: New report submitted!";//Instantiation$SmsOutgoings=new SmsOutgoingsController;//Call a method from SmsOutgoingsControllerwith parameter$SmsOutgoings->notify_user($user_id,$message);}}?> Other way is by using the requestAction() function
<?phpclass ReportsController extends AppController {publicfunctionadd(){$message="Notification: New report submitted!";//Call a method from SmsOutgoingsController with parameter$this->requestAction('/sms_outgoings/notify_user',array($user_id,$message))