Installing
Requirements
- PHP ≥ 8.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 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.
Libraries
Aphiria is broken into various libraries, each of which can be installed individually:
aphiria/api
aphiria/application
aphiria/authentication
aphiria/authorization
aphiria/collections
aphiria/console
aphiria/content-negotiation
aphiria/dependency-injection
aphiria/exceptions
aphiria/framework
aphiria/io
aphiria/middleware
aphiria/net
aphiria/psr-adapters
aphiria/reflection
aphiria/router
aphiria/security
aphiria/sessions
aphiria/validation
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 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>
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/php8.2-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.