Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
159 lines (115 sloc) 4.76 KB

Installing

Requirements

  • PHP ≥ 7.4.0

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.

Installing

Aphiria can be easily installed using Composer:

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

Be sure to configure your server to finish the installation. Load up your website in a browser, and you should see a basic website explaining on how to start customizing it. That's it! If it does not show up, make sure you've made PATH_TO_APHIRIA/tmp writable.

Note: You can download Composer from here.

Libraries

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

  • aphiria/api
  • aphiria/collections
  • aphiria/configuration
  • aphiria/console
  • aphiria/console-annotations
  • aphiria/dependency-injection
  • aphiria/exceptions
  • aphiria/io
  • aphiria/middleware
  • aphiria/net
  • aphiria/reflection
  • aphiria/route-annotations
  • aphiria/router
  • aphiria/serialization
  • aphiria/sessions

Server Config

  • Aphiria's tmp directory needs to be writable from PHP
  • The document root needs to be set to Aphiria's public directory (usually /var/www/html/public or /var/www/html/YOUR_SITE_NAME/public)

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 -S localhost:80 -t public localhost_router.php

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

Apache Config

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

<VirtualHost *:80>
    ServerName YOUR_SITE_DOMAIN
    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]
        </IfModule>
    </Directory>
</VirtualHost>
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/php7.0-fpm.sock;
    }
}
Caddy Config

Add the following to your Caddyfile config:

YOUR_SITE_DOMAIN:80 {
    rewrite {
        r .*
        ext /
        to /index.php?{query}
    }
    fastcgi / 127.0.0.1:9000 php {
        ext .php
        index index.php
    }
}

Versioning

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

You can’t perform that action at this time.