How to Install CakePHP Framework on Ubuntu Linux

This brief tutorial shows students and new users how to install CakePHP Framework on Ubuntu 18.04 | 16.04.

For those who don’t know, CakePHP Framework is a popular PHP development framework that allows rapid app development and faster delivery.

With no complicated XML or YAML files, all you need to do is set up your database and you’re ready to start coding.

CakePHP is a great place to start if you’re looking for a PHP framework with professional support and strong backing from trusted partners.

For more about CakePHP Framework, please check its homepage.

To get started with installing CakePHP Framework, please follow the steps below:

Install Apache2 HTTP

Apache2 HTTP Server is the most popular web server in use today. Since CakePHP works with a web server, go and install Apache2.

To install the Apache2 HTTP server, run the commands below.

sudo apt update
sudo apt install apache2

After installing Apache2, the commands below can be used to stop, start and enable the Apache2 service to always start up with the server boots.

sudo systemctl stop apache2.service
sudo systemctl start apache2.service
sudo systemctl enable apache2.service

To find out if the Apache2 HTTP server is installed, simply open your web browser and type in the server’s IP or hostname.


Apache2 Test Page

When you see a page similar to the one above, Apache2 is installed and working.

Install MariaDB Database Server

CakePHP also needs a database server to store its content. and MariaDB database server is a great place to start when looking at open-source database servers to use with CakePHP.

To install MariaDB run the commands below.

sudo apt install mariadb-server mariadb-client

After installing MariaDB, the commands below can stop, start and enable the MariaDB service to start up when the server boots.

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

After that, run the commands below to secure the MariaDB server by creating a root password and disallowing remote root access.

sudo mysql_secure_installation

When prompted, answer the questions below by following the guide.

  • Enter current password for root (enter for none): Just press the Enter
  • Set root password? [Y/n]: Y
  • New password: Enter password
  • Re-enter new password: Repeat password
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]:  Y
  • Reload privilege tables now? [Y/n]:  Y

Restart MariaDB server

To test if MariaDB is installed and working, run the commands below:

sudo systemctl status mariadb

That should display MariaDB’s service status.

● mariadb.service - MariaDB 10.1.44 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-08 17:08:17 CDT; 1min 54s ago
Docs: man:mysqld(8)
Main PID: 22363 (mysqld)
Status: "Taking your SQL requests now…"
Tasks: 27 (limit: 4666)
CGroup: /system.slice/mariadb.service
└─22363 /usr/sbin/mysqld
Apr 08 17:08:17 ubuntu1804 /etc/mysql/debian-start[22396]: mysql

Install PHP 7.2 and Related Modules

PHP 7.2 may not be available in Ubuntu default repositories. to install it, you will have to get it from third-party repositories.

Run the commands below to add the below third party repository to upgrade to PHP 7.2

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

Then update and upgrade to PHP 7.2

sudo apt update

Next, run the commands below to install PHP 7.2 and related modules.

sudo apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-mysql php7.2-gd php7.2-imap php7.2-ldap php-cas php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip php7.2-sqlite3

After installing PHP 7.2, run the commands below to open the PHP default config file for Apache2.

sudo nano /etc/php/7.2/apache2/php.ini

Then make the changes on the following lines below in the file and save. The value below is a great setting to apply in your environment.

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
max_input_vars = 1500
date.timezone = America/Chicago

After making the change above, save the file and close it.

To test PHP settings with Apache2, create a phpinfo.php file in the Apache2 root directory by running the commands below

sudo nano /var/www/html/phpinfo.php

Then type the content below and save the file.

<?php phpinfo( ); ?>

Save the file. then browse to your server hostname followed by /phpinfo.php


You should see the PHP default test page.

PHP 7.2 ubuntu nginx

After installing PHP, you’ll want to install Composer. To do that, run the commands below:

sudo apt install curl git
curl -sS | sudo php -- --install-dir=/usr/local/bin --filename=composer

With Composer, you will be able to install the latest version of CakePHP on your machine. There are other ways to install CakePHP. However, using Composer is the easiest of them.

Create CakePHP Database

Now that you’ve installed all the packages that are required, continue below to start configuring the servers. First, create a blank database for CakePHP to use.

To do that, run the commands below to log on to MariaDB. When prompted for a password, type the root password you created above.

sudo mysql -u root -p

Then create a database called cakephp


Create a database user called cakephpuser with a new password

CREATE USER 'cakephpuser'@'localhost' IDENTIFIED BY 'new_password_here';

Next, grant the user full access to the cakephpuser database.

GRANT ALL ON cakephp.* TO 'cakephpuser'@'localhost' WITH GRANT OPTION;

Finally, save your changes and exit.


Install CakePHP Framework

Now that you have installed all the requirements to get CakePHP Framework going, follow the steps below:

First, create a directory for your CakePHP project.

sudo mkdir /var/www/cakephp
cd /var/www/cakephp
sudo composer create-project --prefer-dist cakephp/app

After downloading CakePHP, open its default configuration file by running the commands below:

sudo nano /var/www/cakephp/app/config/app_local.php

Then edit the file, input the database info created above, and save.

     * to your application's datastores.
     * See app.php for more configuration options.
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
            //'port' => 'non_standard_port_number',

            'username' => 'cakephpuser',
            'password' => 'cakephpuser_password_here',

            'database' => 'cakephp',
             * If not using the default 'public' schema with the PostgreSQL driver
             * set it here.
            //'schema' => 'myapp',

             * You can use a DSN string to set the entire configuration
            'url' => env('DATABASE_URL', null),


After saving, run the commands below to give www-data control of the directory.

sudo chown -R www-data:www-data /var/www/cakephp
sudo chmod -R 755 /var/www/cakephp

Next, restart Apache2.

sudo systemctl reload apache2

After that, start the server by running the commands below:

cd /var/www/cakephp/app
sudo bin/cake server

After you start up the server, it should display similar lines as below:

Welcome to CakePHP v4.0.5 Console
App : src
Path: /var/www/cakephp/app/src/
DocumentRoot: /var/www/cakephp/app/webroot
Ini Path:
built-in server is running in http://localhost:8765/
You can exit with CTRL-C

After that, open your web browser and browse to the server hostname or IP address followed by port number 8765


You should then see the CakePHP Framework default homepage similar to the one below:

CakePHP Framework Ubuntu

That’s it!

You can begin setting up your environment and start building your apps.


This post showed you how to install CakePHP Framework on Ubuntu 18.04 | 16.04. If you find any error above, please use the comment form below to report.


You may also like the post below: