.. include:: /_includes/all.rst .. _example_setup_cakephp: ************* Setup CakePHP ************* This example will use ``composer`` to install CakePHP from within the PHP container. .. seealso:: |ext_lnk_example_cakephp_documentation| **Table of Contents** .. contents:: :local: Overview ======== The following configuration will be used: +--------------+--------------------------+-------------+------------+-----------------------+ | Project name | VirtualHost directory | Database | TLD_SUFFIX | Project URL | +==============+==========================+=============+============+=======================+ | my-cake | /shared/httpd/my-cake | my_cake | loc | http://my-cake.loc | +--------------+--------------------------+-------------+------------+-----------------------+ Walk through ============ It will be ready in eight simple steps: 1. Enter the PHP container 2. Create a new VirtualHost directory 3. Install CakePHP via ``composer`` 4. Symlink webroot directory 5. Add MySQL database 6. Configure datbase connection 7. Setup DNS record 8. Visit http://my-cake.loc in your browser .. seealso:: :ref:`available_tools` 1. Enter the PHP container -------------------------- .. code-block:: bash host> ./shell.sh .. seealso:: :ref:`work_inside_the_php_container` 2. Create new vhost directory ----------------------------- .. code-block:: bash devilbox@php-7.0.20 in /shared/httpd $ mkdir my-cake 3. Install CakePHP ------------------ .. code-block:: bash devilbox@php-7.0.20 in /shared/httpd $ cd my-cake devilbox@php-7.0.20 in /shared/httpd/my-cake $ composer create-project --prefer-dist cakephp/app cakephp 4. Symlink webroot ------------------ .. code-block:: bash devilbox@php-7.0.20 in /shared/httpd/my-cake $ ln -s cakephp/webroot/ htdocs 5. Add MySQL Database --------------------- .. code-block:: bash devilbox@php-7.0.20 in /shared/httpd/my-cake $ mysql -u root -h 127.0.0.1 -p -e 'CREATE DATABASE my_cake;' 6. Configure database connection -------------------------------- .. code-block:: bash devilbox@php-7.0.20 in /shared/httpd/my-cake $ vi cakephp/config/app.php .. code-block:: php :caption: cakephp/config/app.php :emphasize-lines: 7,14,15,16 [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => '127.0.0.1', /** * 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' => 'root', 'password' => 'secret', 'database' => 'my_cake', 'encoding' => 'utf8', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, ?> 7. DNS record ------------- If you do not have :ref:`setup_auto_dns` configured, you will need to add the following line to your host operating systems ``/etc/hosts`` file (or ``C:\Windows\System32\drivers\etc`` on Windows): .. code-block:: bash :caption: /etc/hosts 127.0.0.1 my-cake.loc .. seealso:: * :ref:`howto_add_project_hosts_entry_on_mac` * :ref:`howto_add_project_hosts_entry_on_win` * :ref:`setup_auto_dns` 8. Open your browser -------------------- All set now, you can visit http://my-cake.loc in your browser.