I'm having some problems with the CiviCRM Resource URL setting that I can't get my head around. Set as [civicrm.root]/ the System Status screen displays the error 'The Resource URL is not set correctly'. Set as [cms.root]/sites/all/modules/civicrm/ everything seems to work fine (until I try to upgrade). But surely both should resolve to the same place?

In the File System Paths section of civicrm.settings.php I have the following:

$civicrm_root = '/var/sites/c/beta.example.net/public_html/sites/all/modules/civicrm';
  define( 'CIVICRM_TEMPLATE_COMPILEDIR', '/var/sites/c/beta.example.net/public_html/sites/default/files/civicrm/templates_c/');

And in the Site URLs section I have:

if (!defined('CIVICRM_UF_BASEURL')) {
  define( 'CIVICRM_UF_BASEURL'      , 'https://example.net/');

Trying to load the with the [civicrm.root]/ setting results in a load of javascript errors, of which the following is an example:

[Error] Failed to load resource: The request timed out. (logo_sm.png, line 0) https://var/sites/c/beta.example.net/public_html/sites/all/modules/civicrm/i/logo_sm.png

That looks as though $civicrm_root is set incorrectly, but it seems to be right in accordance with the examples given in the comments. What am I missing?

Edit: If I go to the CiviCRM Resources URLs page and click on ? I see the variables listed as:

[cms.root]  https://example.net/
[civicrm.root]  https://example.net//var/sites/c/beta.example.net/public_html/sites/all/modules/civicrm/
[civicrm.files] https://example.net/sites/default/files/civicrm/

But if I got to the Directories page and do the same, I see

[cms.root]  /var/sites/j/example.net/public_html
[civicrm.root]  /var/sites/c/beta.example.net/public_html/sites/all/modules/civicrm
[civicrm.files] /var/sites/c/beta.example.net/public_html/sites/default/files/civicrm

Where are these getting calculated from that means they're producing different results? Particularly that random one with the /j/ in the middle, which I've never seen before anywhere!

  • 1
    I had a similar problem after upgrading to 5.23.4 from 5.20.0. Mine was due to cron calling drush with a -r parameter which was a symbolic link to the drupal directory, equivalent but not identical to the path used to specify $civicrm_root. This used to work, but now caused links in emails to have a path like example.com/drupal//var/www/clients/client1/web1/web/drupal/…. After changing the drush -r parameter to /var/www/clients/client1/web1/web/drupal my problem was resolved. Check for inconsistent use of symbolic links in all resource paths/urls.
    – BobS
    Mar 31, 2020 at 16:25
  • 1
    What is your drupal path set in apache or nginx config? Mar 31, 2020 at 19:36
  • @PradeepNayak How do I find that out? Drupal is installed at /var/sites/example.net/public_html/ but I'm on shared hosting, so I don't have access to anything above /var/sites/example.net/. Apr 1, 2020 at 11:01
  • @BobS Any hints on where to start looking? I'm not using drush. I don't have any custom code, and find . -type l -ls returns nothing. Apr 1, 2020 at 11:15
  • 1
    Can you go to CiviCRM directories page and click on '?' and paste all the variables Apr 1, 2020 at 12:49

1 Answer 1


In your civicrm.setting.php update the $civicrm_root and template_c path to use /var/sites/j/example.net/public_html instead of /var/sites/c/beta.example.net/public_html/



  • I don't really understand it, but it works. Thanks! Apr 1, 2020 at 16:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.