Download drupal-7.25.tar.gztar.gz 3.05 MB
MD5: 25906158083d89aa86534df1c683b4ea
SHA-1: 44bd74293cd10d7a77603efaadee775cb3184fa2
SHA-256: dd8b2e46d36cf3e7a66f94d498d5909b93018d40bfc716133bdb1fc54d420db7
Download drupal-7.25.zipzip 3.49 MB
MD5: 716efcdacdc7405f7857aa515c893eb8
SHA-1: bd3867dabaa74cd756340efbfab77208dc62e423
SHA-256: caeadeb56c8fd16612a484673345999ab5618c1176a70bc15b9b4364dac81856

Release info

Created by: David_Rothstein
Created on: 3 Jan 2014 at 00:34 UTC
Last updated: 18 Oct 2017 at 16:40 UTC
Core compatibility: 7.x
Release type: Bug fixes, New features

Release notes

Maintenance release of the Drupal 7 series. Includes bug fixes and small API/feature improvements only (no major new functionality); significant new features are only being added to the forthcoming Drupal 8.0 release.

No security fixes are included in this release.

As with any release, sites should run update.php after updating the code, but for this release it is particularly important to do so due to a change in Drupal's page caching system. Until update.php is run (or caches are cleared), anonymous users viewing cached pages may see garbage characters on the screen. If you did not log in as a site administrator prior to updating the code and are seeing these garbage characters on the screen while trying to log in and run update.php, you can access an uncached version of the login page by adding a random query string to the URL (for example, if you normally log in to your site at, use a URL like instead).

Besides documentation fixes, no changes have been made to the .htaccess, web.config, robots.txt or default settings.php files in this release, so upgrading custom versions of those files is not necessary.

Known issues:

Changes to Drupal's page caching system in this release caused an incompatibility with the Authcache module (see this issue). The solution is to upgrade to Authcache 7.x-1.7 or higher.

Major changes since 7.24:

  • Added an optional feature to the Statistics module to allow node views to be tracked by Ajax requests rather than during the server-side generation of the page. This allows the node counter to work on sites that use external page caches (string change and new administrative option:
  • Fixed a bug in node_save() which prevented the saved node from being updated in hook_node_insert() and other similar hooks.
  • Added a meta tag to install.php to prevent it from being indexed by search engines even when Drupal is installed in a subfolder (minor markup change).
  • Fixed a bug in the database API that caused frequent deadlock errors when running merge queries on some servers.
  • Performance improvement: Prevented block rehashing from writing blocks to the database on every cache clear and cron run when the blocks have not changed. This fix results in an extra 'saved' key which is added and set to TRUE for each block returned by _block_rehash() that actually is saved to the database (data structure change).
  • Added an optional 'skip on cron' parameter to hook_cron_queue_info() to allow queues to avoid being automatically processed on cron runs (API addition).
  • Fixed a bug which caused hook_block_view_MODULE_DELTA_alter() to never be invoked if the block delta had a hyphen in it. To implement the hook when the block delta has a hyphen, modules should now replace hyphens with underscores when constructing the function name for the hook implementation.
  • Fixed a bug which caused cached pages to sometimes be sent to the browser with incorrect compression. The fix adds a new 'page_compressed' key to the $cache->data array returned by drupal_page_get_cache() (minor data structure change).
  • Fixed broken tests on PHP 5.5.
  • Made the File and Image modules more robust when saving entities that have deleted files attached. The code in file_field_presave() will now remove the record of the deleted file from the entity before saving (minor data structure change).
  • Standardized menu callback functions throughout Drupal core to return MENU_NOT_FOUND and MENU_ACCESS_DENIED rather than printing their own "page not found" or "access denied" pages (minor API change in the return value of these functions under some circumstances).
  • Fixed a bug in which caches were not properly cleared when a node was deleted via the administrative interface.
  • Changed the Bartik theme to render content contained in <pre>, <code> and similar tags in a larger font size, so it is easier to read.
  • Fixed a bug in the Search module that caused exceptions to be thrown during searches if the server was not configured to represent decimal points as a period.
  • Fixed a regression in the Image module that made image_style_url() not work when a relative path (rather than a complete file URI) was passed to it.
  • Added a link to the documentation page for cron to the Cron settings page (string change).
  • Added a 'drupal_anonymous_user_object' variable to allow the anonymous user object returned by drupal_anonymous_user() to be overridden with a classed object (API addition).
  • Changed the database API to allow inserts based on a SELECT * query to work correctly.
  • Changed the database schema of the {file_managed} table to allow Drupal to manage files larger than 4 GB.
  • Changed the File module's hook_field_load() implementation to prevent file entity properties which have the same name as file or image field properties from overwriting the field properties (minor API change).

All changes since 7.24:

  • #2051787 by milesw: Document that caches should be cleared after calling field_attach_update().
  • #1876546 by plopesc, Kevin Morse | joachim: Node_type_form_validate() and node_type_form_submit() pointlessly trim machine name value.
  • #1182374 by lyricnz, sivaji, brianV: Code style fixes for includes/filetransfer.
  • #2117601 by Alan D.: Namespaced Drupal\node\Node entity in node_revision_list() doc comment rather than node.
  • #1146244 by Dean Reilly, klausi, fago, firebird, David_Rothstein, aaronbauman, shenzhuxi, jaanhoinatski, themoep, citlacom: Node_access integrity constraint violation on module_invoke_all('node_' . $op, $node);.
  • #1760330 by s.Daniel, David_Rothstein, jfhovinne: Hide vulnerable drupal install.php sites from search engines.
  • #805236 by merrillholt, ekl1773, marcingy, sun, catch: Cache the query in menu_local_tasks().
  • #1252206 by sivaji, droplet, kid_icarus, Bojhan: Remove checkbox spacing.
  • #937284 by chx, chrisdolby, deviantintegral, Berdir, tim.plunkett | hefox: DEADLOCK errors on MergeQuery INSERT due to InnoDB gap locking when condition in SELECT ... FOR UPDATE results in 0 rows.
  • #1201088 by crazyrohila, pjcdawkins, eiriksm, Zgear, barbi | alxsvdr: Drupal_environment_initialize() passes wrong ini_set parameter.
  • #1798066 by boztek, dcam, larowlan | Anonymous: Clean up CommentTestBase::setCommentSettings().
  • #1480734 by kotnik: Useless require_once file in st().
  • #1693336 by chx, David_Rothstein, catch | iamEAP: Block rehashing happens on every cron run.
  • #2136369 by marvil07: Provide a way to avoid processing a queue during cron execution.
  • #1076132 by fizk, friesk, foxtrotcharlie, coolestdude1, David_Rothstein, skwashd, alexpott, tstoeckler | adaddinsane: Hook_block_view_MODULE_DELTA_alter fails with blocks that have a hyphen in the block delta.
  • #1476810 by Spleshka, David_Rothstein, franz | Heine: Drupal_serve_page_from_cache can serve uncompressed data with Content-Encoding gzip header with page_cache_without_database = 1.
  • #2054205 by pfrenssen, Berdir: Broken Tests on PHP 5.5.
  • #2018791 by droplet | gagarine: States.js is not compatible with jquery +1.6.1 because it use $.attr in the wrong way.
  • #1563620 by donquixote, David_Rothstein, chaby: Fix errors running unit tests in Drupal 7 when the Locale module is enabled.
  • #1443158 by agentrickard, Dave Reid, marcingy: File_field_presave assumes that a file object has been loaded.
  • #1426122 by deletedaccount, Alan D., andypost, maximpodorov: Some callbacks return junk when calling drupal_not_found(); replace with return MENU_NOT_FOUND instead.
  • #2120461 by amitsedaiz | joachim: Theme_status_report() uses an integer instead of a constant.
  • #1841900 by olli, herom, Sheldon Rampton: Node deletion should clear page cache.
  • #2127835 by zterry95: Fix code format in user.module.
  • #1198904 by das-peter, jox: Drupal_load_stylesheet() fails to load @import files in different directories.
  • #1269166 by mgifford | hass: PRE tags (and other similar tags) have unreadable small font-size in Bartik.
  • #2078917 by sun: E-mails contain double spaces in soft-wrapped sentences.
  • #1504522 by rahulbile, Chi: Strict warning: Only variables should be passed by reference in update_results_page().
  • #2090207 by helmo, davidhunter, Tor Arne Thune: Undefined property: stdClass::$visibility in profile_view_field().
  • #1970588 by Heine: SearchExcerptTestCase should be a DrupalWebTestCase.
  • #2016497 by naxoc, jhodgdon | plachance: Search query extender should not use floats directly.
  • #1955378 by skek, Darren Oh, claudiu.cristea, David_Rothstein: Return same derivative token with path or URI.
  • #1993728 by johnmcc, pfrenssen: TestMenuTreeData() assert message confuses dashes and underscores.
  • #1209532 by timmillwood, lucascaro, wiifm, iamEAP, sdrycroft, mikeytown2 | slashrsm: Count node views via AJAX in the statistics module.
  • #813634 by jlscott, cafuego, Nitesh Sethia, claudinec, brianV: Node.language column should have an index.
  • #2079315 by mondrake: Image style editing leads to redundant watchdog entries.
  • #1982020 by Fabianx, FreekyMage, Cottser: Add static caching to drupal_html_class().
  • #1996644 by apkwilson, abghosh82 | joachim: User_login_name_validate() uses isset() where other user login form validation handlers use !empty().
  • #2011918 by jesse.d, Liam Morland, scor: Titles are often double-escaped (including in the content attribute of the dc:title meta element for nodes).
  • #2040209 by WebEvt: CSS is truncated when aggregation is turned on.
  • #310315 by superspring, justafish, naxoc, Waltemath | fonant: drupal_wrap_mail() strips trailing blanks from standard hyphen-hyphen-space-newline e-mail signature separator.
  • #2064667 by kboopathi | Charles Belov: PHP Filter has a broken link to "Example PHP snippets" within help.
  • #1414368 by coolestdude1, Dave Reid: Drupal_http_request does not handle basic auth correctly when dealing with blank passwords.
  • #1346098 by benjy | joachim: Standard install profile sets a pointless $vocabulary->help.
  • #1679660 by rhm50, amontero, billk2, valthebald | bagvendt: Add link to cron tutorial on
  • #1399798 by nevergone, amateescu, chriscohen: Add a variable to allow the anonymous user object to not be a stdClass and to work around the fact that anonymous user properties are hardcoded.
  • #2056363 by yched, Sweetchuck, chx: INSERT INTO table SELECT * FROM ... not supported.
  • #1815886 by bojanz, slashrsm | torgosPizza: Change the database schema to allow Drupal core to manage files larger than 4 GB.
  • #1683794 by JacobSanford, somepal, Caligan: Fix docs for user_block_user_action() function
  • #1820086 by gcassie: Remove mention of drupal_session_count() from inline documentation.
  • #2145077 by TR: Fix spelling errors in D7 tests and comments
  • #2129867 by ar-jan: Fix HTML formatting in drupal_add_js docs.
  • #1665446 by sivaji, kostajh, markpavlitski: Fix documentation for user_pass_rehash and related functions
  • #2084535 by sivaji, mErilainen, tankerjoe, DanielFbrg: Fix docs for file_copy
  • #1947766 by pfrenssen: Fix docs for user_page() function
  • #332518 by diego21, joachim, chriscohen: Fix up documentation for system_settings_form().
  • #1345654 by diego21, joachim: Make sure hook_field_info tells you there are other needed hooks
  • #1517032 by damiankloip, covenantd: Fix search-result.tpl.php docs
  • #2109957 by ar-jan, joachim: Clarify docs for hook_field_schema()
  • #2105237 by StephaneQ: Remove innacurate line in stream wrapper class docs
  • #2046677 by drumm | tvn: Fixed Strict warning: Creating default object from empty value in template_preprocess_profile_listing().
  • #2078101 by Xano: Update copyright date
  • #692366 by mariacha1, hosef, Albert Volkman, xjm, underq, kid_icarus, willmoy, bradweikel: Replace US-centric URLs with language-neutral URLs
  • #2061275 by StephaneQ, cconrad: Do not confuse hook_cron_queue_info with hook_cron in docs
  • #2062399 by kattekrab, Kartagis, effulgentsia, cafuego, Damien Tournoud, beejeebus, Dries, cweagans, webchick: Add Percona to list of supported MySQL-like databases
  • #1977054 by ebargtuo, dooug: Make docs for language API callbacks match the code
  • #2066275 by Dave Reid: Fixed file_field_load() overwrites any field item properties with file entity properties.
  • #2059785 by kiamlaluno, longwave: Fix punctuation in field_view_field() docs
  • #2062127 by jlindsey15, joachim: Document system_requirements as implementation of hook_requirements
  • #2061545 by StephaneQ, rterrein: Add missing ampersand in sample hook_dashboard_regions_alter function body
  • #2061843 by TravisCarden: Clean up the docs for hook_schema
  • #2044791 by skipyT, alexandre.todorov, joachim: Clarify documentation of hook_block_view around empty return values
  • #1967802 by ebargtuo: Fix documentation of block view alter hooks
  • #2059685 by StephaneQ, Cottser: Remove t() from test assertion messages in dashboard module
  • #2059687 by StephaneQ, Cottser: Remove t() from test assertion messages in blog module
  • #2059689 by StephaneQ, dcam: Remove t() from test assertion messages in profile module
  • #2059691 by StephaneQ, dcam: Remove t() from test assertion messages in trigger module


The selected release is the release that will be used for automated testing. Optional projects are only used for testing.


No required projects


No optional projects