Running Your App¶
A CodeIgniter 4 app can be run in a number of different ways: hosted on a web server, using virtualization, or using CodeIgniter’s command line tool for testing. This section addresses how to use each technique, and explains some of the pros and cons of them.
If you’re new to CodeIgniter, please read the Getting Started section of the User Guide to begin learning how to build dynamic PHP applications. Enjoy!
- Open the app/Config/App.php file with a text editor and
set your base URL. If you need more flexibility, the baseURL may
be set within the
.envfile as app.baseURL=”http://example.com”.
- If you intend to use a database, open the
app/Config/Database.php file with a text editor and set your
database settings. Alternately, these could be set in your
One additional measure to take in production environments is to disable
PHP error reporting and any other development-only functionality. In
CodeIgniter, this can be done by setting the
ENVIRONMENT constant, which
is more fully described on the environments page.
By default, the application will run using the “production” environment. To
take advantage of the debugging tools provided, you should set the environment
If you will be running your site using a web server (e.g. Apache or Nginx),
you will need to modify the permissions for the
writable folder inside
your project, so that it is writable by the user or account used by your
CodeIgniter 4 comes with a local development server, leveraging PHP’s built-in web server
with CodeIgniter routing. You can use the
serve script to launch it,
with the following command line in the main directory:
php spark serve
This will launch the server and you can now view your application in your browser at http://localhost:8080.
The built-in development server should only be used on local development machines. It should NEVER be used on a production server.
If you need to run the site on a host other than simply localhost, you’ll first need to add the host
hosts file. The exact location of the file varies in each of the main operating systems, though
all unix-type systems (include OS X) will typically keep the file at /etc/hosts.
The local development server can be customized with three command line options:
You can use the
--hostCLI option to specify a different host to run the application at:
php spark serve --host=example.dev
By default, the server runs on port 8080 but you might have more than one site running, or already have another application using that port. You can use the
--portCLI option to specify a different one:
php spark serve --port=8081
You can also specify a specific version of PHP to use, with the
--phpCLI option, with its value set to the path of the PHP executable you want to use:
php spark serve --php=/usr/bin/php18.104.22.168
A CodeIgniter4 webapp is normally hosted on a web server.
httpd is the “standard” platform, and assumed in much of our documentation.
Apache is bundled with many platforms, but can also be downloaded in a bundle with a database engine and PHP from [Bitnami](https://bitnami.com/stacks/infrastructure).
The “mod_rewrite” module enables URLs without “index.php” in them, and is assumed in our user guide.
Make sure that the rewrite module is enabled (uncommented) in the main
configuration file, eg.
LoadModule rewrite_module modules/mod_rewrite.so
Also make sure that the default document root’s <Directory> element enables this too, in the “AllowOverride” setting:
<Directory "/opt/lamp7.2/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
We recommend using “virtual hosting” to run your apps. You can set up different aliases for each of the apps you work on,
Make sure that the virtual hosting module is enabled (uncommented) in the main
configuration file, eg.
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Add a host alias in your “hosts” file, typically
/etc/hosts on unix-type platforms,
c:/Windows/System32/drivers/etc/hosts on Windows.
Add a line to the file. This could be “myproject.local” or “myproject.test”, for instance:
Add a <VirtualHost> element for your webapp inside the virtual hosting configuration,
<VirtualHost *:80> DocumentRoot "/opt/lamp7.2/apache2/htdocs/myproject/public" ServerName myproject.local ErrorLog "logs/myproject-error_log" CustomLog "logs/myproject-access_log" common </VirtualHost>
If your project folder is not a subfolder of the Apache document root, then your <VirtualHost> element may need a nested <Directory> element to grant the web s erver access to the files.
With the above configuration, your webapp would be accessed with the URL
http://myproject.local in your browser.
Apache needs to be restarted whenever you change its configuration.
Virtualization is an effective way to test your webapp in the environment you plan to deploy on, even if you develop on a different one. Even if you are using the same platform for both, virtualization provides an isolated environment for testing.
The codebase comes with a
VagrantFile.dist, that can be copied to
and tailored for your system, for instance enabling access to specific database or caching engines.
The Vagrant configuration file assumes you have set up a ubuntu/bionic64 Vagrant box on your system:
vagrant box add ubuntu/bionic64
Once set up, you can then launch your webapp inside a VM, with the command:
Your webapp will be accessible at
http://localhost:8080, with the code coverage
report for your build at
http://localhost:8081 and the user guide for