The Drupal content management system is a fairly complex PHP framework that allows you to build some very powerful websites without knowing much PHP code at all. Drupified has put together this page to help new users identify the requirements for running a Drupal website and easily getting the installation files you need to get started on installing Drupal.
Skip to: Downloads | Web Server Requirements | Database Requirements | PHP Requirements
Drupal Server Requirements
Below you can find the server requirements for the Drupal content management system.
Note: if you meet these requirements but still have problems with your site, be sure to read through the Webhosting Troubleshooting FAQ.
A minimum base installation requires at least 3MB of disk space but you should assume that your actual disk space will be somewhat higher. For example, if you install many contributed modules and contributed themes, the actual disk space for your installation could easily be 40 MB or more (exclusive of database content, media, backups and other files).
A useful FAQ (http://drupal.org/node/59680) explains how to use phpinfo to get the details of your system. For example, phpinfo will tell you if you have a database already installed and what version your system is running. Phpinfo will also tell you what php variables are set as well as many other helpful things.
Drupal has been deployed successfully on both Apache, IIS, and Nginx.
Drupal will work on Apache 1.3 or Apache 2.x hosted on UNIX/Linux, OS X, or Windows. The majority of Drupal development and deployment is done on Apache, so there is more community experience and testing performed on Apache than on other web servers.
You can use the Apache 'mod_rewrite' extension to allow for clean URLs.
Drupal core will work using IIS 5, IIS 6, or IIS 7 if PHP is configured correctly.
To achieve clean URLs you may need to use a third party product. For IIS7 you can use the Microsoft URL Rewrite Module or a third party solution.
When using Drupal on IIS 7 with fastcgi you must install Hotfix kb954946, or wait until the hotfix appears in a package update (recommended). KB954946 was included in Windows 2008 Server SP2
Drupal core will work with Nginx .8.x if PHP is configured properly by using with either FastCGI or PHP-FPM.
Nginx does not use .htaccess files, so you will need to configure your rewrite rules and redirects with Nginx syntax to allow for clean URLs.
Drupal is being developed to be web server independent, but we have limited or no reports of successful use on web servers not listed here.
The total file size of your Drupal installation will depend on what you add to your site, but Drupal core files alone will take up approximately 2 to 3 MB uncompressed. The exact size depends on the version of Drupal you have installed.
Recommended: MySQL (or an equivalent such as MariaDB)
Drupal 5.x and earlier supports MySQL 3.23.17 or higher. MySQL 4.1 or higher is strongly recommended.
Drupal 6 supports MySQL 4.1 or higher.
Drupal 7 will only support MySQL 5.0.15 or higher, and requires the PDO database extension for PHP (see What is PDO?).
There are several drop-in replacements for MySQL. Drupal has been extensively tested with MariaDB, and version 5.1.44 (or greater) is recommended. It is also likely that other drop-in replacements will work well with Drupal, but they have not specifically undergone testing.
NOTE: Drupal makes use of some features not available on some inexpensive hosting plans so please check that your host allows database accounts with the following rights:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER.
These rights are sufficient to run Drupal core 6.x.
Some contributed modules, and also Drupal core 5.x (but not Drupal core 6.x), additionally require the following rights:
CREATE TEMPORARY TABLES, LOCK TABLES.
Note: If your system/host is running MySQL 4.1 or newer and you receive the error "Client does not support authentication protocol requested by server", address the problem by following the instructions provided by MySQL AB. There is a minor OS issue with some MySQL 5+ installations primarily on Windows but affecting some versions of Unix/Linux as well.
Note: When using Drupal 5.x or later, particularly with contributed modules, it may be necessary to set the system variable max_allowed_packet to at least 16M. Some inexpensive hosting plans set this value too low (the MySQL default is only 1M). In that case, you may need to choose a better hosting plan. A value of 1M may be sufficient for 5.x.
Note: Drupal supports MyISAM and InnoDB table types. NDB tables (MySQL Cluster) are not supported.
Note that if your web hosting account is set up with a graphic control panel such as Plesk or CPanel, it is very likely that you do not need to worry about installing a driver for MySQL -- it is probably already installed on your server. You might wish to simply create your database and proceed with installing Drupal, and then refer back to Drupal documentation for specific troubleshooting help if you run into problems.
Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with PostgreSQL please file issues with those contributed modules as you find them.
Drupal 6 supports PostgreSQL 7.1 or higher
Drupal 7 will only support PostgreSQL 8.3 or higher
PHP 5.2.6 for Windows has a bug in its pgsql extension. You will need to replace it with the php_pgsql.dll from version 5.2.5.
SQLite 3.x - Drupal 7 only
Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with SQLite please file issues with those contributed modules as you find them.
Other database engines
Microsoft SQL Server and Oracle are supported by an additional module.
Please see discussions in the Enterprise Group if you are interested in working on database support.
Recommended: PHP 5.2 for Drupal 5 and 6, PHP 5.3 for Drupal 7
Required: PHP version 4.4.0 or higher for Drupal 5 and Drupal 6, PHP 5.2.5 or higher for Drupal 7
PHP 5.3 is not yet supported by Drupal 5.x, but is supported by Drupal 6.14 core and higher (see the release notes for 6.14) and recommended fr Drupal 7.x. Note that some contributed modules may not be compatible with PHP 5.3, and that some PHP 5.3 configurations still show warnings with Drupal 6.14; work is ongoing to resolve the latter in #360605: PHP 5.3 Compatibility.
PHP 5.2.5 or higher is a requirement for Drupal 7. (Distributions of PHP 5.2.4 that include backported security patches, such as the version included in Ubuntu Hardy, should also work with Drupal 7, but are not recommended).
PHP memory requirements can vary significantly depending on the modules in use on your site. Drupal 6 core requires PHP's memory_limit to be at least 16MB, and Drupal 7 core requires 32MB. Warning messages will be shown if the PHP configuration does not meet these requirements. However, while these values may be sufficient for a default Drupal installation, a production site with a number of commonly used modules enabled (CCK, Views etc.) could require 64 MB or more. Some installations may require much more, especially with media-rich implementations. If you are using a hosting service it is important to verify that your host can provide sufficient memory for the set of modules you are deploying or may deploy in the future. (See the Increase PHP memory limit page in the Troubleshooting FAQ for additional information on modifying the PHP memory limit.)
The standard PHP extensions (enabled by default) Hash and JSON are required by Drupal 7.
The PHP extension for connecting to your chosen database must be installed and enabled. Drupal's currently supported database connectors are: mysql (the original MySQL extension), mysqli (an improved connector for newer MySQL installations), and pgsql (for PostgreSQL). Note: PHP 5.x no longer enables the mysql extension by default. Please read the links above for installing and enabling your chosen connector. Additionally, Drupal 6.x does not provide the option to select the mysql connector if mysqli is enabled in your PHP configuration.
PHP XML extension (for Blog API, Drupal, and Ping modules). This extension is enabled by default in a standard PHP installation; the Windows version of PHP has built-in support for this extension. Enabling the XML extension also enables PHP DOM. DOM is now a systems requirement.
An image library for PHP such as the GD library is needed for image manipulation (resizing user pictures, image and imagecache modules). GD is included with PHP 4.3 and higher and usually enabled by default. ImageMagick is also supported for basic image manipulations in Drupal core but there is much less support from contributed modules.
If you have administrator rights on a Debian/Ubuntu server, and GD is not already available (see your phpinfo) it can usually be installed by going:
sudo apt-get install php5-gd
or on Redhat/Centos:
sudo yum install php-gd
See the ImageMagick install instructions for your platform if you want that.
PHP needs the following configuration directives for Drupal to work (only directives that differ from the default php.ini-dist / php.ini-recommended):
register_globals: off; this is the default value, but some hosts have it enabled
error_reporting set to E_ALL & ~E_NOTICE. Work is ongoing to change this to E_ALL for Drupal 6 and Drupal 7.
safe_mode: off. Safe mode may interfere with file and image uploads.
Php Data Objects (PDO) must be activated for Drupal 7 to install and run correctly. Look in your php.ini. Uncomment (remove the leading semicolon) at line extension=php_pdo.dll, extension=php_pdo_mysql.dll. In Linux, these would be
extension=pdo_mysql.so. Some Linux distributions may have these extensions by default in files found in the conf.d folder. If these lines are not there, you will need to add them. The PECL version of PDO is not compatible with Drupal 7 and cannot be used. More information can be found on the What is PDO page.
In addition, we recommend the following setting: session.cache_limiter: nocache
Some of these settings are contained in the default .htaccess file that ships with Drupal, so you shouldn't need to set them explicitly. Note, however, that setting PHP configuration options from .htaccess only works under the following conditions:
With Apache (or a compatible web server)
If the .htaccess file is actually read, i.e. AllowOverride is not None
If PHP is installed as an Apache module
See the PHP manual for how to change configuration settings for other interfaces to PHP.
Drupal 7 may require the time parameter to be at least 30 seconds.
In some shared hosting environments, access to these settings is restricted. If you cannot make these changes yourself, please ask your hosting provider to adjust them for you.
If using xdebug, ensure that the xdebug.show_exception_trace value is set to 0, or this could cause Drupal's installer to crash.
Updated March 25, 2011 at http://drupal.org/requirements
Drupal releases are available in 2 stable releases and one development release during a development cycle. Here are the current stable Drupal releases and the current Drupal development release.
Drupal 7.0 - Current Version Stable Release
Drupal 6.20 - Previous Version Stable Release
Note: Since the release of Drupal 7 on Jan. 5th 2011, Drupal 5 is no longer offically supported. You may find a handful of developers willing to support Drupal 5, but if you haven't already started to look for an upgrade to Drupal 6 you should immediately.
Head over to the Drupal project page page to get the latest version of the release you want to run. Currently I would suggest using Drupal 6 for production websites until Drupal 7 has time to mature a little more. There are still a lot of important modules that either need to be ported to Drupal 7 or new modules written for Drupal 7.
Already got Drupal installed and want to extend it's core functionality? Head on over to the Drupified Drupal themes page or the Drupified Drupal modules page to find more Drupal downloads.