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.11
Latest
12 hours ago
-
- A licence key saved with a stray space in the product slug or the key itself (
lightbox-gallery, for example) now works for installs and updates. Spaces are trimmed when a key is saved, and keys already saved that way are read correctly - An image pasted into the editor as inline data (a
data:image) now shows on the frontend. Grav was turning the+characters in the image data into spaces, which also affected image paths with a+in them such asa+b.pnggetgrav/grav-premium-issues#628
- A licence key saved with a stray space in the product slug or the key itself (
v2.2.10 4 days ago
-
- With
images.watermark.watermark_allon, every image now gets the watermark, not only images with a resize or other action. A 1x image made from an@2xfile and a framed image are stamped once, and retina alternatives are kept. Thanks @HawkForge #4359 #4360 - A remote CSS or JS file in the asset pipeline (a CDN stylesheet, for example) now gives up after 5 seconds if its server doesn't answer (set with the new
assets.pipeline_remote_timeoutoption insystem.yaml), instead of holding the page until PHP'smax_execution_timeends it with a 503. When a remote file can't be downloaded, its group is not cached: that request renders each file as its own tag, and the next request tries the download again
- With
v2.2.9 6 days ago
-
- Adding an environment folder such as
user/env/<host>/no longer creates a new security key for that host, which broke forms and sessions signed with the old one. The key stays inuser/config, and a copy an earlier version put in an environment folder is moved there - A plugin or theme zipped from inside its own folder, or a zip made on macOS with a
__MACOSXfolder, now installs withbin/gpm direct-installand the admin's install-from-zip instead of failing with "Not a valid Grav package". Thanks @wakqasahmed #2688 #4357 - Sites on PHP-FPM pools that disable
getmypid()(a common hardening) no longer fail when the page index is rebuilt: its temporary database file is named with a random string instead of the process id. The scheduler'swhoami()also checks forget_current_user()before calling it
- Adding an environment folder such as
v2.2.8 1 week ago
-
- Plugins can react when an image is loaded with the new
onImageMediumResetevent, for example to queue a watermark or other action on every image from its own metadata
- Plugins can react when an image is loaded with the new
-
- Setting only
watermark_allfor images insystem.yamlno longer removes the watermark image, position and scale settings, and the watermark settings can now be edited in the Admin under Images
- Setting only
v2.2.7 1 week ago
-
- The scheduler log no longer gets two lines written every minute when no job was due; runs that do work still log their full detail. Thanks @onetrev #4355
- The compiled config, blueprints and languages caches are written to a temporary file and moved into place, and a damaged one is rebuilt, so a request arriving while the cache is being rewritten no longer fails with a blank error page. Thanks @omega8cc #4356
- The scheduler's run summary in
scheduler.logcounted each successful job twice
v2.2.6 2 weeks ago
-
- With the logs or cache folder moved by
GRAV_LOG_PATHorGRAV_CACHE_PATH, the cache and backup jobs write their output to the moved logs folder, a job'soutput:can be alog://path, andbin/grav cache-cleanupand the GPM permission check find the moved cache folder. Thanks @onetrev #4344 - Scheduler history files older than the
retention_dayssetting are now deleted, instead of collecting forever #4344
- With the logs or cache folder moved by
v2.2.11
Latest
12 hours ago
-
- A licence key saved with a stray space in the product slug or the key itself (
lightbox-gallery, for example) now works for installs and updates. Spaces are trimmed when a key is saved, and keys already saved that way are read correctly - An image pasted into the editor as inline data (a
data:image) now shows on the frontend. Grav was turning the+characters in the image data into spaces, which also affected image paths with a+in them such asa+b.pnggetgrav/grav-premium-issues#628
- A licence key saved with a stray space in the product slug or the key itself (
v2.2.10 4 days ago
-
- With
images.watermark.watermark_allon, every image now gets the watermark, not only images with a resize or other action. A 1x image made from an@2xfile and a framed image are stamped once, and retina alternatives are kept. Thanks @HawkForge #4359 #4360 - A remote CSS or JS file in the asset pipeline (a CDN stylesheet, for example) now gives up after 5 seconds if its server doesn't answer (set with the new
assets.pipeline_remote_timeoutoption insystem.yaml), instead of holding the page until PHP'smax_execution_timeends it with a 503. When a remote file can't be downloaded, its group is not cached: that request renders each file as its own tag, and the next request tries the download again
- With
v2.2.9 6 days ago
-
- Adding an environment folder such as
user/env/<host>/no longer creates a new security key for that host, which broke forms and sessions signed with the old one. The key stays inuser/config, and a copy an earlier version put in an environment folder is moved there - A plugin or theme zipped from inside its own folder, or a zip made on macOS with a
__MACOSXfolder, now installs withbin/gpm direct-installand the admin's install-from-zip instead of failing with "Not a valid Grav package". Thanks @wakqasahmed #2688 #4357 - Sites on PHP-FPM pools that disable
getmypid()(a common hardening) no longer fail when the page index is rebuilt: its temporary database file is named with a random string instead of the process id. The scheduler'swhoami()also checks forget_current_user()before calling it
- Adding an environment folder such as
v2.2.8 1 week ago
-
- Plugins can react when an image is loaded with the new
onImageMediumResetevent, for example to queue a watermark or other action on every image from its own metadata
- Plugins can react when an image is loaded with the new
-
- Setting only
watermark_allfor images insystem.yamlno longer removes the watermark image, position and scale settings, and the watermark settings can now be edited in the Admin under Images
- Setting only
v2.2.7 1 week ago
-
- The scheduler log no longer gets two lines written every minute when no job was due; runs that do work still log their full detail. Thanks @onetrev #4355
- The compiled config, blueprints and languages caches are written to a temporary file and moved into place, and a damaged one is rebuilt, so a request arriving while the cache is being rewritten no longer fails with a blank error page. Thanks @omega8cc #4356
- The scheduler's run summary in
scheduler.logcounted each successful job twice
v2.2.6 2 weeks ago
-
- With the logs or cache folder moved by
GRAV_LOG_PATHorGRAV_CACHE_PATH, the cache and backup jobs write their output to the moved logs folder, a job'soutput:can be alog://path, andbin/grav cache-cleanupand the GPM permission check find the moved cache folder. Thanks @onetrev #4344 - Scheduler history files older than the
retention_dayssetting are now deleted, instead of collecting forever #4344
- With the logs or cache folder moved by