To work around PHP's inconsistencies with where it reads request data from (sometimes superglobals, sometimes php://input), Aphiria requires the following setting in either a .user.ini or your php.ini:

enable_post_data_reading = 0

This will disable automatically parsing POST data into $_POST and uploaded files into $_FILES.

Note: If you're developing any non-Aphiria applications on your web server, use .user.ini to limit this setting to only your Aphiria application. Alternatively, you can add php_value enable_post_data_reading 0 to an .htaccess file or to your httpd.conf.


Aphiria comes with a skeleton app to help you quickly get up and running. It can be installed using Composer:

composer create-project aphiria/app --prefer-dist --stability dev

Be sure to configure your server to finish the installation.

Note: You can download Composer from here.


Aphiria is broken into various libraries, each of which can be installed individually:

Server Config

Note: You must set YOUR_SITE_DOMAIN and YOUR_SITE_DIRECTORY with the appropriate values in the configs below.

PHP Built-in Web Server Config

To run Aphiria locally, run the following in a terminal:

php aphiria app:serve

This will run PHP's built-in web server. The site will be accessible at http://localhost:8080.

Apache Config

Create a virtual host in your Apache config with the following settings:

<VirtualHost *:80>
    DocumentRoot YOUR_SITE_DIRECTORY/public

    <Directory YOUR_DOCUMENT_ROOT/public>
        <IfModule mod_rewrite.c>
            RewriteEngine On

            # Handle trailing slashes
            RewriteRule ^(.*)/$ /$1 [L,R=301]

            # Create pretty URLs
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]

Nginx Config

Add the following to your Nginx config:

server {
    listen 80;
    server_name YOUR_SITE_DOMAIN;
    root YOUR_SITE_DIRECTORY/public;
    index index.php;
    # Handle trailing slashes
    rewrite ^/(.*)/$ /$1 permanent;
    # Create pretty URLs
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    location ~ \.php$ {
        include                 /etc/nginx/fastcgi_params;
        fastcgi_index           index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass            unix:/run/php/php8.2-fpm.sock;

Caddy Config

Add the following to your Caddyfile config:

    rewrite {
        r .*
        ext /
        to /index.php?{query}
    fastcgi / php {
        ext .php
        index index.php


Aphiria follows semantic versioning 2.0.0. For more information on semantic versioning, check out its documentation.