Installing
Table of Contents
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
andYOUR_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.