Note: if you meet these requirements but still have problems with your site, be sure to read through the Webhosting Troubleshooting FAQ.
To install and run Drupal, you need the following components:
- a web server
- a database server
- the PHP programming language runtime
- free disk space (this varies based on Drupal version)
- a Mail Transfer Agent (MTA) so PHP can send emails
See the phpinfo() page on Drupal.org to learn 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 versions of PHP, MySQL, etc. your system is running. Phpinfo will also tell you what PHP variables are set as well as many other helpful things.
Drupal can run on a multitude of operating systems, web servers and databases. Not all the operating systems (OSes) support the same database and web server options. Here is a quick reference to which OSes support which servers. If an application or a version of an application does not appear in the list below then it is probably not supported by Drupal.
Apple MacOS:
- OS Version: 10.x
- Web Server: Apache 1.3-2.x
- Database Server: Mysql 4.1+, MariaDB 5.1.x, Postgresql 7.1+, sqlite 3.3.7+
- Mail Transfer Agent: postfix, sendmail
FreeBSD:
- OS Version: 6+
- Web Server: Apache 1.3-2.x
- Database Server: Mysql 4.1+, MariaDB 5.1.x, Postgresql 7.1+, sqlite 3.3.7+
- Mail Transfer Agent: sendmail, exim, postfix, qmail
GNU/Linux:
- Distrobutions: CentOS, Debian, Fedora, Gentoo, OpenSUSE, RHEL, SLES, Ubuntu, (and many more)
- Kernel Version: 2.6.19+ (just to be on the safe side)
- Web Server: Apache 1.3-2.x, (some users report success with nginx and lighttpd)
- Database Server: Mysql 4.1+, MariaDB 5.1.x, Postgresql 7.1+, sqlite 3.3.7+
- Mail Transfer Agent: sendmail, postfix, exim
Microsoft Windows Platforms:
- OS Version: XP, Vista, 7, 2003, 2008
- Web Server: Apache 1.3-2.x, IIS 5-7
- Database Server: MySQL 4.1+, MariaDB 5.x, Postgresql 7.1+
- Mail Transfer Agent: fake sendmail for windows . Read more at the php.net site
It is recommended to use:
- apache 2.2 (The Apache developers have deprecated the 1.3 series and recommend using 2.2.)
- MySQL 5.x.
- PHP 5.2.x is no longer supported and it is recommended when possible to upgrade to 5.3.x.
Drupal version specific requirements:
Drupal 5.x
- Drupal 5.x and earlier supports MySQL 3.23.17 or higher. MySQL 4.1 or higher is strongly recommended.
- PHP 4.4.0 or higher. Version 5.2 is recommended. PHP 5.3 is not yet supported.
- 3.2 megabytes of disk space minimum. 40+ MB recommended.
Drupal 6.x
- MySQL 4.1 or higher
- Postgresql 7.1 or higher
- PHP 4.4.0 or higher. Version 5.2 is recommended. PHP 5.3 is supported by Drupal 6.14 or higher.
- PHP extensions: DOM
- 4.8 megabytes of disk space minimum. 50+ MB recommended.
Drupal 7.x
- MySQL 5.0.15 or higher
- MariaDB 5.1.44 or higher
- Postgresql 8.3 or higher
- SQLite 3.3.7 or higher
- PHP 5.2.5 or higher. Version 5.3 is recommended.
- Required PHP extensions: DOM, Hash, JSON, PDO
- Optional PHP extensions: Tokenizer (needed by Coder)
- 14 megabytes of disk space minimum. 60+ MB recommended.
Disk space
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).
Web servers
Drupal has been deployed successfully on both Apache and IIS.
Apache (Recommended)
- 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 is being developed to be web server independent, but we have limited or no reports of successful use on web servers not listed here.
Database server
Recommended: MySQL (or an equivalent such as MariaDB)
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.
- 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.
- All identifiers are limited to 63 characters. This leads to duplicate index names and errors when using modules like CCK, Views and SimpleTest. These modules build complex queries that can exceed this limit. To change the 63 character identifier limit you must recompile postgres.
SQLite 3.x - Drupal 7 only
SQLite 3.3.7 or higher.
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 servers
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.
- 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 for 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 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 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.so and 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.