Relocating the files directory
Trying best practices I occasionally move the files directory from DRUPAL_ROOT/files/my-site.com to DRUPAL_ROOT/sites/my-sites/files
Doing this has some implications for the files table content. All file-path are pointing to the wrong location.
Quick solution for this is an mysql replace update query.
select replace(filepath, 'files/my-site/', 'sites/my-site/files/') from files;
# update files set filepath=replace(filepath, 'files/my-site/', 'sites/my-site/files/')"Or through drush
drush sql query "select replace(filepath, 'files/my-site/', 'sites/my-site/files/') from files"
# drush sql query "update files set filepath=replace(filepath, 'files/my-site/', 'sites/my-site/files/')"See http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_re... for more examples
Reacties
Clemens Tolboom (niet gecontroleerd)
di, 2009/02/10 - 7:45am
Permalink
for public <-> private too
You can also use this technique if you switch from the public to private (or vice verse) filesystem. I used a few more rules though. You'll also need to do this to any other tables in which you might store a URL to the file system
<?php/**
* Change to the private file system.
*/
function mymodule_update_9() {
$ret = array();
variable_set('file_downloads', FILE_DOWNLOADS_PRIVATE);
// Body$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'href="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'href="/files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'href="files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'src="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'src="/files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'src="files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, '<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, '<a href="https://secure.domain.com/system/files/'">https://secure.domain.com/system/files/'</a>)");
$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'secure.domain.com/files/', 'secure.domain.com/system/files/')");
// Teaser$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'href="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'href="/files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'href="files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'src="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'src="/files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'src="files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'secure.domain.com/files/', 'secure.domain.com/system/files/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'secure.domain.com/files/', 'secure.domain.com/system/files/')");
// comments$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'href="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'href="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'href="/files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'href="files/', 'href="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'src="<a href="https://secure.domain.com/files/'">https://secure.domain.com/files/'</a>, 'src="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'src="/files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'src="files/', 'src="/system/files/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'secure.domain.com/files/', 'secure.domain.com/system/files/')");
// Fix CiviCRM$ret[] = update_sql("UPDATE node_revisions SET body = REPLACE(body, 'system/files/civicrm/', 'files/civicrm/')");
$ret[] = update_sql("UPDATE node_revisions SET teaser = REPLACE(teaser, 'system/files/civicrm/', 'files/civicrm/')");
$ret[] = update_sql("UPDATE comments SET comment = REPLACE(comment, 'system/files/civicrm/', 'files/civicrm/')");
return
$ret;}
?>
Reactie toevoegen