Note fileinfo is required to be enabled (edit php.ini and uncomment php_fileinfo.dll or use php selector within cpanel if available.)
Nova Framework is a PHP 5.5 MVC system. It's designed to be lightweight and modular, allowing developers to build better and easy to maintain code with PHP.
The base framework comes with a range of helper classes.
Full docs & tutorials are available on novaframework.com and the Github Wiki.
Offline docs are available in PDF, EPUB and MOBI formats on Leanpub
Screencasts are available on Novacasts
The framework requirements are limited.
- Apache Web Server or equivalent with mod rewrite support.
- IIS with URL Rewrite module installed - http://www.iis.net/downloads/microsoft/url-rewrite
- PHP 5.5 or greater is required
- fileinfo enabled (edit php.ini and uncomment php_fileinfo.dll or use php selector within cpanel if available.)
- OpenSSL extension
- INTL extension should be enabled
Although a database is not required, if a database is to be used the system is designed to work with a MySQL database using PDO.
The framework is on packagist https://packagist.org/packages/nova-framework/framework.
Install from terminal now by using:
composer create-project nova-framework/framework foldername -s dev
The foldername is the desired folder to be created.
Option 1 - files above document root:
- place the contents of public into your public folder (.htaccess and index.php)
- navigate to your project in terminal and type composer install to initiate the composer install.
- edit public/.htaccess set the rewritebase if running on a sub folder otherwise a single / will do.
- edit app/Config.example.php change the SITEURL and DIR constants. the DIR path this is relative to the project url for example / for on the root or /foldername/ when in a folder. Also change other options as desired. Rename file as Config.php
- set a 32 character ENCRYPT_KEY by using the CLI tool by typing
php nova make:key
in your command line / console, or alternatively, by using this tool: http://jeffreybarke.net/tools/codeigniter-encryption-key-generator/
Option 2 - everything inside your public folder
- place all files inside your public folder
- navigate to the public folder in terminal and type composer install to initiate the composer install.
- open index.php and change the paths from using DIR to FILE:
define('APPDIR', realpath(__DIR__.'/app/').'/');
define('SYSTEMDIR', realpath(__DIR__.'/system/').'/');
define('PUBLICDIR', realpath(__DIR__).'/');
define('ROOTDIR', realpath(__DIR__).'/');
- edit .htaccess set the rewritebase if running on a sub folder otherwise a single / will do.
- edit app/Config.example.php change the SITEURL and DIR constants. the DIR path this is relative to the project url for example / for on the root or /foldername/ when in a folder. Also change other options as desired. Rename file as Config.php
- set a 32 character ENCRYPT_KEY by using the CLI tool by typing
php nova make:key
in your command line / console, or alternatively, by using this tool: http://jeffreybarke.net/tools/codeigniter-encryption-key-generator/
##Nginx configuration
No special configuration, you only need to configure Nginx and PHP-FPM.
server {
listen 80;
server_name yourdomain.tld;
access_log /var/www/access.log;
error_log /var/www/error.log;
root /var/www;
index index.php index.html;
location = /robots.txt {access_log off; log_not_found off;}
location ~ /\\. {deny all; access_log off; log_not_found off;}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
##IIS with URL Rewrite module installed - http://www.iis.net/downloads/microsoft/url-rewrite
For IIS the htaccess needs to be converted to web.config:
<configuration>
<system.webserver>
<directorybrowse enabled="true"/>
<rewrite>
<rules>
<rule name="rule 1p" stopprocessing="true">
<match url="^(.+)/$"/>
<action type="Rewrite" url="/{R:1}"/>
</rule>
<rule name="rule 2p" stopprocessing="true">
<match url="^(.*)$"/
<action type="Rewrite" url="/index.php?{R:1}" appendquerystring="true"/>
</rule>
</rules>
</rewrite>
</system.webserver>
</configuration>
##Setting up a VirtualHost (Optional but recommended)
Navigate to:
<path to your xampp installation>\apache\conf\extra\httpd-vhosts.conf
and uncomment:
NameVirtualHost *:80
Then add your VirtualHost to the same file at the bottom:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:\xampp\htdocs\testproject\public"
ServerName testproject.dev
<Directory "C:\xampp\htdocs\testproject\public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Finally, find your hosts file and add:
127.0.0.1 testproject.dev
You should then have a virtual host set up, and in your web browser, you can navigate to testproject.dev to see what you are working on.
This has been tested with php 5.6 and php 7 please report any bugs.
See complete Change Log