Downloads
Everything Grav
Download Grav
Grav Core is the base package with core functionality and a few essential starting pages. Grav Core + Admin also includes the Administration Panel plugin. Both are easy to get started with — check out our Basic Tutorial and Guide to the Administration Panel.
Latest stable release
Production-ready. The version we recommend for every new site and every upgrade of an existing one.
Get Started
1
Quick installation
- Download either the Grav Core or Grav Core + Admin2 plugin installation package.
- Extract the zip file into your webroot.
- Point your browser at your local webserver:
http://yoursite.com
2
How to install the Admin2 plugin
If you have not already installed the admin plugin, you can do so easily with GPM:
$
This will install the admin plugin plus its dependencies (api & login). After this is complete, point your browser to your Grav installation and you will be prompted to create a new admin user.
Changelog
v2.2.24
Latest
17 hours ago
-
- Running a plugin's test suite against a Grav checkout no longer leaves a
user/config/security-private.phpin the plugin's folder, where agit add -Acould commit it into the plugin's release. Grav now creates the key file only in a real Grav install, and code that loads Grav's classes from anywhere else gets a key that lasts for that process
- Running a plugin's test suite against a Grav checkout no longer leaves a
v2.2.23 3 days ago
-
- When a cache file can't be deleted, the cache purge job and
bin/grav clearnow name the file and the reason (such as "Permission denied") instead of "Unknown error", and carry on with the rest of the cache instead of stopping at the first one (#4384) - [security] The
svg_image()Twig function now escapes the classes it adds to the SVG. Thanks @manus-pi - [security] The
svg_image()Twig function only inlines real.svgfiles, so a theme that takes the image path from a page header can no longer be pointed at other files on the server
- When a cache file can't be deleted, the cache purge job and
v2.2.22 4 days ago
-
- On servers with the PHP
yamlextension, a YAML file with a plainy,yes,on,off,nornokey keeps that key instead of turning it into1or0, so settings such as an image'sy:size and theYES/NOlanguage strings load the same as on servers without the extension - An asset added by the site's own full URL, such as
url('theme://css/custom.css', true), or by a link that starts with the site's subfolder, no longer renders with the host or subfolder twice
- On servers with the PHP
v2.2.21 5 days ago
-
- A plugin that adds a scheduler job as a class method (such as
[$this, 'method']) without an id, or with its id where the job's arguments go, no longer crashes every scheduler run and empties the admin's job list #4380
- A plugin that adds a scheduler job as a class method (such as
v2.2.20 6 days ago
-
- Updating or reinstalling a plugin swaps the new copy in all at once, so the site never runs with the plugin missing or half copied, and the old copy is put back if the new one cannot be moved in
- JSON sent to the site is now checked against size limits before it is read, so an oversized request is turned away quickly instead of tying up the server (limits are under
request.jsoninsystem.yaml) - Sites behind a proxy that ends HTTPS (such as Cloudflare in front of a server on port 80) no longer redirect visitors to the address with
:80added, for example when reloading the admin
v2.2.19 6 days ago
-
- A number field given a value too large for an integer no longer causes a warning on PHP 8.5
- The bundled
lighttpd.confloads on current lighttpd releases again, serves/.well-known/files such as ACME challenges, and keeps Markdown source files and the same folders and file types private as the Apache rules do (lighttpd sites copy the updated rules fromwebserver-configs/by hand) - The bundled Caddyfiles also keep JSON files under
system/,vendor/anduser/, Markdown source files such asCHANGELOG.md, thewebserver-configs/folder and hidden files inside/.well-known/private (Caddy sites copy the updated rules fromwebserver-configs/by hand) - The bundled
nginx.confalso keeps Markdown source files such asCHANGELOG.mdand thewebserver-configs/folder private, and matches root files such ascomposer.jsonin any letter case (nginx sites copy the updated rules fromwebserver-configs/by hand) - The bundled IIS
web.configalso keepsLICENSE.txt,composer.json,composer.lockand Markdown source files private, covers the same file types undersystem/andvendor/as the Apache rules, and matches its rules however a file path is written (IIS sites copy the updated rules fromwebserver-configs/by hand) - The
php -Sdevelopment router (system/router.php) keepstmp/,user/config/,user/accounts/anduser/data/private and refuses scripts inimages/andassets/, the same as the shipped web-server rules - [security] The Apache
.htaccessexception for/.well-known/now covers that folder only, so other hidden files and folders whose names start withwell-knownstay blocked. Upgrading updates existing.htaccessfiles
v2.2.24
Latest
17 hours ago
-
- Running a plugin's test suite against a Grav checkout no longer leaves a
user/config/security-private.phpin the plugin's folder, where agit add -Acould commit it into the plugin's release. Grav now creates the key file only in a real Grav install, and code that loads Grav's classes from anywhere else gets a key that lasts for that process
- Running a plugin's test suite against a Grav checkout no longer leaves a
v2.2.23 3 days ago
-
- When a cache file can't be deleted, the cache purge job and
bin/grav clearnow name the file and the reason (such as "Permission denied") instead of "Unknown error", and carry on with the rest of the cache instead of stopping at the first one (#4384) - [security] The
svg_image()Twig function now escapes the classes it adds to the SVG. Thanks @manus-pi - [security] The
svg_image()Twig function only inlines real.svgfiles, so a theme that takes the image path from a page header can no longer be pointed at other files on the server
- When a cache file can't be deleted, the cache purge job and
v2.2.22 4 days ago
-
- On servers with the PHP
yamlextension, a YAML file with a plainy,yes,on,off,nornokey keeps that key instead of turning it into1or0, so settings such as an image'sy:size and theYES/NOlanguage strings load the same as on servers without the extension - An asset added by the site's own full URL, such as
url('theme://css/custom.css', true), or by a link that starts with the site's subfolder, no longer renders with the host or subfolder twice
- On servers with the PHP
v2.2.21 5 days ago
-
- A plugin that adds a scheduler job as a class method (such as
[$this, 'method']) without an id, or with its id where the job's arguments go, no longer crashes every scheduler run and empties the admin's job list #4380
- A plugin that adds a scheduler job as a class method (such as
v2.2.20 6 days ago
-
- Updating or reinstalling a plugin swaps the new copy in all at once, so the site never runs with the plugin missing or half copied, and the old copy is put back if the new one cannot be moved in
- JSON sent to the site is now checked against size limits before it is read, so an oversized request is turned away quickly instead of tying up the server (limits are under
request.jsoninsystem.yaml) - Sites behind a proxy that ends HTTPS (such as Cloudflare in front of a server on port 80) no longer redirect visitors to the address with
:80added, for example when reloading the admin
v2.2.19 6 days ago
-
- A number field given a value too large for an integer no longer causes a warning on PHP 8.5
- The bundled
lighttpd.confloads on current lighttpd releases again, serves/.well-known/files such as ACME challenges, and keeps Markdown source files and the same folders and file types private as the Apache rules do (lighttpd sites copy the updated rules fromwebserver-configs/by hand) - The bundled Caddyfiles also keep JSON files under
system/,vendor/anduser/, Markdown source files such asCHANGELOG.md, thewebserver-configs/folder and hidden files inside/.well-known/private (Caddy sites copy the updated rules fromwebserver-configs/by hand) - The bundled
nginx.confalso keeps Markdown source files such asCHANGELOG.mdand thewebserver-configs/folder private, and matches root files such ascomposer.jsonin any letter case (nginx sites copy the updated rules fromwebserver-configs/by hand) - The bundled IIS
web.configalso keepsLICENSE.txt,composer.json,composer.lockand Markdown source files private, covers the same file types undersystem/andvendor/as the Apache rules, and matches its rules however a file path is written (IIS sites copy the updated rules fromwebserver-configs/by hand) - The
php -Sdevelopment router (system/router.php) keepstmp/,user/config/,user/accounts/anduser/data/private and refuses scripts inimages/andassets/, the same as the shipped web-server rules - [security] The Apache
.htaccessexception for/.well-known/now covers that folder only, so other hidden files and folders whose names start withwell-knownstay blocked. Upgrading updates existing.htaccessfiles