Details
-
Type: Bug
-
Status: Done/Fixed
-
Priority: Minor
-
Resolution: Fixed/Completed
-
Affects Version/s: 3.2.2
-
Fix Version/s: 3.2.4
-
Component/s: Core CiviCRM
-
Labels:None
Description
IF your server is set up like this where the drupal root is something like
/home/sites/<site_id>/web/
then function getRelativePath does not work properly (in CRM/Contact/BAO/Contact.php).
For Drupal sites it will not return the /sites/ dir within the drupal root, but the /sites/<site_id/web/sites/* dir outside drupal root.
Not sure how often this kind of server setup occurs, but CiviCrm should look within the "drupal root" and not outside.
I solved it like this:
else if ( $config->userFramework == 'Drupal' ) {
$absolutePathStr = strstr( $absolutePath, 'sites');
->
else if ( $config->userFramework == 'Drupal' ) {
$absolutePathStr = substr($absolutePath, strrpos( $absolutePath, 'sites'));
So the last occurence of 'sites' is used. Seems safe enough for me.
I only changed it for the "drupal" Framework, because it makes sense that directory "sites" can occur outside the web-root, but "administrator" or "files" will be very rare.