Installation and Setup

Introduction

This document gives a complete overview about the installation procedure of Wave Framework to a web server.

Installing Wave Framework

Where to next?

Wave Framework has multiple tutorials you can try out in order to learn how Wave Framework can be used to build various web services and websites. Even if you have not worked with API's and MVC-specific frameworks before, getting a good grip on such a development is not very difficult with Wave. Tutorials are available in the Tutorials section here.

Server Requirements

Wave Framework requires a server that allows to route all requests to Index Gateway file (/index.php). Index Gateway does not work without URL rewriting. It is possible to use Wave Framework's API without Index Gateway, but in this case you need to develop your own gateway that does not require such HTTP request URL rewriting.

Apache

Apache and mod_rewrite (RewriteEngine) is required if you intend to use Index Gateway for website as well as default API Handler. Apache .htaccess file is included in the archive that should do everything server needs to make it work, if the mod_rewrite module is supported by Apache. Because RewriteEngine directives are loaded from local .htaccess files, then Apache also needs to support .htaccess files. If RewriteEngine has problems, then make sure that your Apache setting has 'AllowOverride' set to 'All' instead of 'None' in directory settings. RewriteEngine module is also required, so the 'LoadModule rewrite_module modules/mod_rewrite.so' line has to be included or uncommented from Apache configuration.

Nginx

Wave Framework also supports Nginx server. Nginx does not have .htaccess style local settings for web server, thus these settings have to be written in Nginx configuration itself. Recommended settings for Nginx are stored in /nginx.conf file. You have to manually place them in Nginx server configuration.

PHP

PHP version 5.3.3 or newer is required.

Wave Framework also uses Zlib extension for compressed output, PDO extension for database connections, GD Image Library is used to dynamically resize images, Mcrypt is used for crypted input and output, Fileinfo extension for File Handler and Zip extension for automatic update scripts together with FTP, APC is used to improve the performance of PHP and caching, SimpleXML is used to support XML stream as API input, cURL is used for external requests, . These extensions come with PHP and should be enabled by default, but if they are not enabled then compatibility script will warn you about it and recommend what you should do.

Filesystem

It is also required that /filesystem/ folder and all of its subfolders are writable by PHP. This is not required on Windows server, since folders are already writable.

Successful output from Compatibility Script

SUCCESS: PHP is version 5.3.0 or above
SUCCESS: PHP setting short_open_tag is enabled
SUCCESS: PDO is supported
SUCCESS: PDO MySQL is supported
SUCCESS: PDO SQLite is supported
SUCCESS: PDO PostgreSQL is supported
SUCCESS: PDO Oracle is supported
SUCCESS: PDO MSSQL is supported
SUCCESS: Zlib is supported
SUCCESS: APC PHP is supported
SUCCESS: SimpleXML is supported
SUCCESS: cURL is supported
SUCCESS: Fileinfo is supported
SUCCESS: Mcrypt is supported
SUCCESS: Zip is supported
SUCCESS: FTP is supported
SUCCESS: Memcache is supported
SUCCESS: GD Graphics Library is supported
SUCCESS: Apache server is used
SUCCESS: Apache mod_rewrite extension is supported
SUCCESS: .htaccess file is present
SUCCESS: /filesystem/ is writable
SUCCESS: /filesystem/cache/ is writable
SUCCESS: /filesystem/cache/images/ is writable
SUCCESS: /filesystem/cache/output/ is writable
SUCCESS: /filesystem/cache/resources/ is writable
SUCCESS: /filesystem/cache/custom/ is writable
SUCCESS: /filesystem/cache/tags/ is writable
SUCCESS: /filesystem/messenger/ is writable
SUCCESS: /filesystem/keys/ is writable
SUCCESS: /filesystem/limiter/ is writable
SUCCESS: /filesystem/sessions/ is writable
SUCCESS: /filesystem/logs/ is writable
SUCCESS: /filesystem/errors/ is writable
SUCCESS: /filesystem/tokens/ is writable
SUCCESS: /filesystem/tmp/ is writable
SUCCESS: /filesystem/userdata/ is writable
SUCCESS: /filesystem/backups/ is writable
SUCCESS: /filesystem/static/ is writable
SUCCESS: /filesystem/updates/ is writable
SUCCESS: /filesystem/data/ is writable