Drupal issueshttps://lab.civicrm.org/dev/drupal/-/issues2022-10-08T12:19:55Zhttps://lab.civicrm.org/dev/drupal/-/issues/110Address no longer available as Relationship for Views in Drupal 72022-10-08T12:19:55ZherbdoolAddress no longer available as Relationship for Views in Drupal 7It seems to me this was working in CiviCRM 5.21 (just tested and it's there) and no longer in 5.22 or 5.23.
A diff of commits in `civicrm-drupal` didn't look suspicious to me but perhaps I'm missing something. Perhaps it's in `civicrm-c...It seems to me this was working in CiviCRM 5.21 (just tested and it's there) and no longer in 5.22 or 5.23.
A diff of commits in `civicrm-drupal` didn't look suspicious to me but perhaps I'm missing something. Perhaps it's in `civicrm-core`?
Error message:
> https://www.example.com/admin/structure/views/ajax/add-item/member_lists/default/relationship
> Notice: Undefined index: base in view->get_base_tables() (line 758 of /var/www/vhosts/example.com/httpdocs/sites/default/modules/views/includes/view.inc). |5.25.0https://lab.civicrm.org/dev/drupal/-/issues/107Drupal8: Cannot use CiviCRM after installation. Must logout/login.2020-08-07T03:28:13ZtottenDrupal8: Cannot use CiviCRM after installation. Must logout/login.Overview
----------------------------------------
After performing the installation of Civi-D8, all potential Civi users need to logout/login - otherwise they will get weird error messages.
This issue was previously reported by Mark Ha...Overview
----------------------------------------
After performing the installation of Civi-D8, all potential Civi users need to logout/login - otherwise they will get weird error messages.
This issue was previously reported by Mark Hanna in JIRA as https://issues.civicrm.org/jira/browse/CRM-19878 and it seems to have gotten dropped in the JIRA/Gitlab transition.
Reproduction steps
----------------------------------------
1. Setup a D8 site - include the CiviCRM code but *do not* activate it yet
* I used `civibuild`'s `d8prj-re` type but hacked the `app/config/d8prj-re/install.sh` to skip CiviCRM installation
2. Login to the web UI
3. Activate the `civicrm` module
4. Navigate to `/civicrm/dashboard`
Current behaviour
----------------------------------------
The screen displays an error:
> Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing
> DB Constraint Violation - contact_id should possibly be marked as mandatory for DashboardContact,create API. If so, please raise a bug report.
This is because the currently logged-in user does not have a synchronized contact record (i.e. nothing in `civicrm_uf_match`).
The current work-around is to use out-of-band docs (ex: [roundearth/drupal-civicrm-project README](https://gitlab.com/roundearth/drupal-civicrm-project#installing-civicrm)) and tell the admin to logout/login.
Expected behaviour
----------------------------------------
The record in `civicrm_uf_match` should be auto-created.
In D7, it does so. It's implemented by way of `civicrm_invoke()` which makes a call to `CRM_Core_BAO_UFMatch::synchronize(...)`. To wit: if you try to access any CiviCRM-based pages, then it will first check that *your user account* is synchronized.
Comments
----------------------------------------
The D8 module does do some user/contact synchronization, but only in a narrower range of cases (e.g. on-login). This is why the logout/login work-around helps.
Hypothetically, one could add a patch to the installer to trigger the sync for the current-user, but I think D7's approach is generally more robust. The former case would still be tempermental if (a) there are concurrent Drupal sessions for people who will have access to Civi or (b) you're loading DB snapshots (for dev/test or backup-restoration) in which the user/contact have not yet been sync'd.
5.24.0https://lab.civicrm.org/dev/drupal/-/issues/98CiviCRM session instance not working when Masquerading in Drupal 72021-09-01T21:02:42ZMichael McAndrewCiviCRM session instance not working when Masquerading in Drupal 7Have just upgraded to D7-5.20.1 and noticed that CRM_Core_Session::singleton() does not work when masquerading.
Setting a breakpoint in a Drupal page while masquerading and running `Civi::log()->debug(var_export(CRM_Core_Session::single...Have just upgraded to D7-5.20.1 and noticed that CRM_Core_Session::singleton() does not work when masquerading.
Setting a breakpoint in a Drupal page while masquerading and running `Civi::log()->debug(var_export(CRM_Core_Session::singleton(),true))`
Results in the following in the log:
```
Dec 11 13:08:57 [debug] CRM_Core_Session::__set_state(array(
'_key' => 'CiviCRM',
'_session' =>
array (
'masquerading' => '76',
),
))
```5.23.0https://lab.civicrm.org/dev/drupal/-/issues/91Drupal8: Buggy behavior if user account is created without email address2020-08-07T03:28:13ZJonGoldDrupal8: Buggy behavior if user account is created without email addressIn Drupal 8, the email address isn't a required field. However, if an email address isn't specified, then the `civicrm_uf_match` record isn't created, the corresponding CiviCRM contact isn't created, and this leads to some very buggy be...In Drupal 8, the email address isn't a required field. However, if an email address isn't specified, then the `civicrm_uf_match` record isn't created, the corresponding CiviCRM contact isn't created, and this leads to some very buggy behavior, such as the dashboard showing multiple dashboards (see https://lab.civicrm.org/dev/drupal/issues/54#note_23706), which I imagine is because `civicrm_dashboard_contact` is being queried by contact ID, and finding none, simply loads all dashlets for all users.
I think the correct way to handle this is to use a Drupal hook to make the email address required.5.29.0https://lab.civicrm.org/dev/drupal/-/issues/89Drupal8 - Contact Report does not load any values in the ACL Group/Role field2020-01-15T05:06:39ZjitendraDrupal8 - Contact Report does not load any values in the ACL Group/Role fieldNo values are loaded in Access Tab -> ACL Group/Role field in any contact reports eg `Constituent Summary `
![image](/uploads/476933860e82a4ab629031222dc9d925/image.png)No values are loaded in Access Tab -> ACL Group/Role field in any contact reports eg `Constituent Summary `
![image](/uploads/476933860e82a4ab629031222dc9d925/image.png)5.23.0jitendrajitendrahttps://lab.civicrm.org/dev/drupal/-/issues/85Drupal8: Enabling language breaks a fresh CiviCRM install2020-01-26T17:07:09ZRar9Drupal8: Enabling language breaks a fresh CiviCRM installInstalled a fresh D8+civicrm via composer.
composer create-project roundearth/drupal-civicrm-project:8.x-dev MyDomain --no-interaction
setup d8
chmod +w web/sites/default
drush en -y civicrm
Change the "Resource URL" to `[cms.root]/lib...Installed a fresh D8+civicrm via composer.
composer create-project roundearth/drupal-civicrm-project:8.x-dev MyDomain --no-interaction
setup d8
chmod +w web/sites/default
drush en -y civicrm
Change the "Resource URL" to `[cms.root]/libraries/civicrm`
As icons still were not 100% I added to civicrm.settings.php the hard coded ResourceURLs
```php
if (!defined('CIVICRM_UF_BASEURL')) {
define( 'CIVICRM_UF_BASEURL' , 'https://MyDomain');
$civicrm_setting['URL Preferences']['userFrameworkResourceURL'] = '[cms.root]/libraries/civicrm';
$civicrm_paths['civicrm.root']['url'] = CIVICRM_UF_BASEURL . '/libraries/civicrm/';
$civicrm_setting['domain']['userFrameworkResourceURL'] = '[cms.root]/libraries/civicrm';
$civicrm_paths['cms.root']['path'] = '/var/www/vhosts/MyDomain/web';
}
```
Now cleared cache and CiviCRM runs :-)
But when I enable D8 language under extensions the CiviCRM site breaks! :-(
[Screenshot_1](/uploads/b0edfe413622185916d319889f178cd8/Screenshot_1.jpg)
Disabling Drupal language again, will bring back CiviCRM.5.23.0https://lab.civicrm.org/dev/drupal/-/issues/79Error when upgrading to 5.16.02022-08-12T05:14:12ZJGauntError when upgrading to 5.16.0Not sure if this is the right place to add the issue so apologies in advance.
I've attempted to upgrade three separate sites on three separate servers from 5.14 and 5.15 to 5.16.0 and all three came back with the following error:
Error...Not sure if this is the right place to add the issue so apologies in advance.
I've attempted to upgrade three separate sites on three separate servers from 5.14 and 5.15 to 5.16.0 and all three came back with the following error:
Error: syntax error, unexpected ':', expecting '{' in /home/example/public_html/sites/all/modules/civicrm/vendor/league/csv/src/functions.php, line 33
The three sites are all on Drupal 7 on PHP 7.1 although I did upgrade one temporarily to 7.2 and also 7.3 to see if that made a difference which it didn't.
I'm used to upgrading civi on many different sites all the time so I don't believe it to be a fault of my own.
I tried to upgrade the usual way:
- Delete old codebase
- Unpack new code base
- Run 'drush civicrm-upgrade-db'
It is when I enter the drush command the error flags up and the update fails. I've used the same method countless times in the past so I do think there is an issue somewhere.
Thanks,
Jade5.16.3https://lab.civicrm.org/dev/drupal/-/issues/75[regression] `cv` fails on CiviCRM 5.15.02022-04-06T22:13:17ZJonGold[regression] `cv` fails on CiviCRM 5.15.0Any command that attempts to access Civi fails with:
```
[RuntimeException]
Cannot resolve path using "cms.root.url"
```
Civi 5.14.2 works fine.
The issue is `CRM...Any command that attempts to access Civi fails with:
```
[RuntimeException]
Cannot resolve path using "cms.root.url"
```
Civi 5.14.2 works fine.
The issue is `CRM_Utils_System_Drupal8::languageNegotiationURL()`, which was added in 5.15.0. Removing this function restores the correct behavior, but I assume has a detrimental effect on multilingual.
The underlying cause of the error is hidden because of a later PR by @bgm that accounts for the REST API. If you roll back his change, the error becomes:
```
[Drupal\Core\DependencyInjection\ContainerNotInitializedException]
\Drupal::$container is not initialized yet. \Drupal::setContainer() must be called with a real container.
```5.16.0https://lab.civicrm.org/dev/drupal/-/issues/66Recurring contributions fail to be recorded2019-06-03T08:37:17ZBobSRecurring contributions fail to be recordedAfter upgrading from from 5.10.3 to 5.13.4, certain recurring contributions from PayPal began to not be recorded, while others were recorded.
The server log indicated:
* Posts to civicrm/extern/ipn.php were failing with "Call to undefin...After upgrading from from 5.10.3 to 5.13.4, certain recurring contributions from PayPal began to not be recorded, while others were recorded.
The server log indicated:
* Posts to civicrm/extern/ipn.php were failing with "Call to undefined function variable_get() in ...civicrm/CRM/Utils/System/Drupal.php:790"
* Posts to civicrm/payment/ipn/1 were successful.
It appears that during the failed posts, we arrive in civicrm/CRM/Utils/System/Drupal.php::getTimeZoneString() without bootstrapping Drupal and die on a call to variable_get('configurable_timezones', 1).
Failure was confirmed on https://civicrm.demo.civihosting.com (received HTTP status 500 on a post to civicrm/extern/ipn.php).5.14.0https://lab.civicrm.org/dev/drupal/-/issues/54Drupal8 CiviCRM conflicts with Masquerade module2022-02-24T00:33:50ZJonGoldDrupal8 CiviCRM conflicts with Masquerade moduleReported on d.o originally by jptillman (who is on chat.c.o with the same name) in the Masquerade queue: https://www.drupal.org/project/masquerade/issues/3019665
I confirmed the same issue, and also confirmed that uninstalling CiviCRM r...Reported on d.o originally by jptillman (who is on chat.c.o with the same name) in the Masquerade queue: https://www.drupal.org/project/masquerade/issues/3019665
I confirmed the same issue, and also confirmed that uninstalling CiviCRM resolves this issue. This fits a pattern of Civi having some sort of incorrect interaction with the D8 user login - see #53, core#231, and [CRM-19878](https://issues.civicrm.org/jira/browse/CRM-19878) for other examples.5.41.0https://lab.civicrm.org/dev/drupal/-/issues/48Column next_sched_contribution should be next_sched_contribution_date for Vie...2020-04-15T06:55:32ZherbdoolColumn next_sched_contribution should be next_sched_contribution_date for Views integrationIn https://github.com/civicrm/civicrm-drupal/blob/a6a3276330d54ce88fe78cdf9f9034421d56f20c/modules/views/components/civicrm.contribute.inc#L1057 it's referencing a table column that doesn't exist (anymore?).In https://github.com/civicrm/civicrm-drupal/blob/a6a3276330d54ce88fe78cdf9f9034421d56f20c/modules/views/components/civicrm.contribute.inc#L1057 it's referencing a table column that doesn't exist (anymore?).5.14.0https://lab.civicrm.org/dev/drupal/-/issues/31CiviMember Role sync is no longer syncing Pending memberships2022-10-08T12:04:06ZjitendraCiviMember Role sync is no longer syncing Pending membershipsPending membership does not sync roles even if the option is configured in the settings page.Pending membership does not sync roles even if the option is configured in the settings page.5.9jitendrajitendrahttps://lab.civicrm.org/dev/drupal/-/issues/19Drupal8: Implement set UF locale/language (affects mailing tokens)2020-07-16T17:23:38ZbgmDrupal8: Implement set UF locale/language (affects mailing tokens)This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN...This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN)
* Send a mailing in French, with the unsubscribe URL token
Expected result: the token should link to the page in French.
Related JIRA issue for Drupal7: https://issues.civicrm.org/jira/browse/CRM-16352
cc @monish.deb @samuelsov5.15.0bgmbgmhttps://lab.civicrm.org/dev/drupal/-/issues/17Drupal8: Get UF locale/language is not supported (ex: for inheritLocale)2020-07-16T17:23:38ZbgmDrupal8: Get UF locale/language is not supported (ex: for inheritLocale)The option for `inhericLocale` does not seem to be working. To reproduce:
* In Drupal, enable translation and enable a second language, set language-detection using the URL prefix.
* Create a multi-lingual site (admin > locale > languag...The option for `inhericLocale` does not seem to be working. To reproduce:
* In Drupal, enable translation and enable a second language, set language-detection using the URL prefix.
* Create a multi-lingual site (admin > locale > languages, enable multilingual, then enable a second language)
* Enable the "inherit CMS language" option.
![Capture_d_écran_de_2018-04-26_14-35-12](/uploads/6573bb26a55bffe8729724d5e9b028f7/Capture_d_écran_de_2018-04-26_14-35-12.png)
Result: no matter whether accessing CiviCRM in English or French, the site is always in the default language.5.3.0bgmbgmhttps://lab.civicrm.org/dev/drupal/-/issues/190Links in Drupal Views are improperly URL-encoded2023-10-05T12:00:17ZresgaLinks in Drupal Views are improperly URL-encodedOriginal and open issue: [CRM-21716 Links in Drupal Views are improperly URL-encoded](https://issues.civicrm.org/jira/browse/CRM-21716).
As I read https://lab.civicrm.org/infra/ops/-/wikis/gitlab-roadmap#what-about-the-2000-open-issues-...Original and open issue: [CRM-21716 Links in Drupal Views are improperly URL-encoded](https://issues.civicrm.org/jira/browse/CRM-21716).
As I read https://lab.civicrm.org/infra/ops/-/wikis/gitlab-roadmap#what-about-the-2000-open-issues-in-jira-that-are-not-confirmed not all issues were migrated, and it looks like this one wasn't.
The updated code in the issue above works well, and URLs are properly formatted.https://lab.civicrm.org/dev/drupal/-/issues/188drupal 9: Event registration with drupal user creation crashes if using first...2023-06-28T07:09:49ZDaveDdrupal 9: Event registration with drupal user creation crashes if using first+last+email dedupe ruleThis is pulled out from https://lab.civicrm.org/dev/drupal/-/issues/186 since it's not recent and while touching a similar code area it's not exactly the same.
Part of the problem here is it only sends on the email to createUser, but as...This is pulled out from https://lab.civicrm.org/dev/drupal/-/issues/186 since it's not recent and while touching a similar code area it's not exactly the same.
Part of the problem here is it only sends on the email to createUser, but as in the other ticket it already has the contact id so it shouldn't need to do dedupe rules, it's just how to get that contact id to get passed on to synchronizeUFMatch: https://github.com/civicrm/civicrm-core/blob/c0a3d0e01a7d8df34786a1510d8a4661dffee82b/CRM/Event/Form/Registration.php#L807. Using $_POST is not great, but it needs to be something that gets passed on from the _drupal_ insert hook. And it would be nice to re-use whatever mechanism for the contact user add task too.https://lab.civicrm.org/dev/drupal/-/issues/187Installing drupal/fontawesome causes CiviCRM to freeze the browser.2023-05-24T06:53:44Zdarren.woodsInstalling drupal/fontawesome causes CiviCRM to freeze the browser.Install vanilla Drupal 9 via composer.
Installed CiviCRM via composer according to docs.
Installed the Fontawesome module: composer require 'drupal/fontawesome:^2.25'
Loading any CiviCRM paths /civicrm/admin causes the browser to enter...Install vanilla Drupal 9 via composer.
Installed CiviCRM via composer according to docs.
Installed the Fontawesome module: composer require 'drupal/fontawesome:^2.25'
Loading any CiviCRM paths /civicrm/admin causes the browser to enter an infinite loop once the DOM is loaded.
Tracked it down to all.js from Fontawesome.
Removing Fontawesome module resolves it: composer remove 'drupal/fontawesome'
Could this be related to the civicrm asset plugin?
Before the browser freezes, I can see there are two icons for each admin menu option.
We would dearly love to use fa icons in our Drupal theme :pray:https://lab.civicrm.org/dev/drupal/-/issues/175Call to deprecated function CRM_Contribute_PseudoConstant::pcpStatus in drupa...2022-03-08T14:11:00ZDaveDCall to deprecated function CRM_Contribute_PseudoConstant::pcpStatus in drupal 7 views modulehttps://civicrm.stackexchange.com/questions/41350/why-am-i-getting-deprecated-function-warnings
Coming from https://github.com/civicrm/civicrm-drupal/blob/e22d89a50108a2b4da99e971d0fdcdd656edd56c/modules/views/civicrm/civicrm_handler_fi...https://civicrm.stackexchange.com/questions/41350/why-am-i-getting-deprecated-function-warnings
Coming from https://github.com/civicrm/civicrm-drupal/blob/e22d89a50108a2b4da99e971d0fdcdd656edd56c/modules/views/civicrm/civicrm_handler_filter_pseudo_constant.inc#L45
`$this->_pseudo_constant = call_user_func_array($this->definition['pseudo class'] . "::" . $this->definition['pseudo method'], $pseudo_args);`
```
1 .../sites/all/modules/civicrm/CRM/Contribute/PseudoConstant.php(352): CRM_Core_Error::deprecatedFunctionWarning("Function pcpStatus will be removed")
2 .../sites/all/modules/civicrm/drupal/modules/views/civicrm/civicrm_handler_filter_pseudo_constant.inc(45): CRM_Contribute_PseudoConstant::pcpStatus()
3 .../sites/all/modules/views/includes/handlers.inc(65): civicrm_handler_filter_pseudo_constant->construct()
4 .../sites/all/modules/views/includes/handlers.inc(87): _views_create_handler((Array:8), "handler", "filter")
5 .../sites/all/modules/views/views.module(1399): _views_prepare_handler((Array:8), (Array:18), "status", "filter")
6 .../sites/all/modules/date/date_views/includes/date_views_fields.inc(59): views_get_handler("civicrm_pcp", "status", "filter")
7 .../sites/all/modules/date/date_views/date_views.module(156): _date_views_fields("civicrm_contact")
8 .../sites/all/modules/calendar/includes/calendar.views_template.inc(37): date_views_fields("civicrm_contact")
9 .../sites/all/modules/views/views.module(1520): calendar_views_templates()
10 .../sites/all/modules/views/views_ui.module(56): views_get_all_templates()
11 .../includes/menu.inc(2831): views_ui_menu()
12 .../includes/menu.inc(2794): menu_router_build()
13 .../includes/menu.inc(468): menu_rebuild()
14 .../includes/menu.inc(1779): menu_get_item()
15 .../includes/menu.inc(1794): menu_get_custom_theme(TRUE)
16 .../includes/common.inc(5402): menu_set_custom_theme()
17 .../includes/bootstrap.inc(2602): _drupal_bootstrap_full()
18 .../index.php(20): drupal_bootstrap(7)
19 {main}
```https://lab.civicrm.org/dev/drupal/-/issues/173Leaking cacheability metadata2022-02-09T22:36:58ZfkohrtLeaking cacheability metadataAfter installing CiviCRM 5.45 on a fresh Drupal 9.3.2 running on Ubuntu 20.04.3 LTS, the [SAML Authentication](https://www.drupal.org/project/samlauth) module issues a warning after every successful authentication event:
> While process...After installing CiviCRM 5.45 on a fresh Drupal 9.3.2 running on Ubuntu 20.04.3 LTS, the [SAML Authentication](https://www.drupal.org/project/samlauth) module issues a warning after every successful authentication event:
> While processing SAML authentication response, code leaked cacheability metadata. This indicates a bug somewhere (but it is hard to pinpoint where): if the same code is called in other scenarios too, it may cause fatal crashes, or bloat the render cache unnecessarily. Please investigate. Metadata: i:6;:O:37:"Drupal\Core\Render\BubbleableMetadata":4:{s:16:"*cacheContexts";a:0:{}s:12:"*cacheTags";a:0:{}s:14:"*cacheMaxAge";i:-1;s:14:"*attachments";a:0:{}}
One of the maintainers of the `samlauth` module explains in a corresponding ticket:
> the samlauth module isn't leaking metadata. It's detecting that some other code in your website, which was executed during the login process, is leaking metadata and should be fixed.
>
> — roderik, “[Code leaked cacheability metadata](https://www.drupal.org/project/samlauth/issues/3232577)”, [comment #4](https://www.drupal.org/project/samlauth/issues/3232577#comment-14354950)
Before installing CiviCRM, no warnings appeared in the log, therefore I'd say the appearance of the warnings somehow correspond to the fact that CiviCRM has been installed: CiviCRM code for Drupal might leak cacheability metadata.https://lab.civicrm.org/dev/drupal/-/issues/170kcfinder error 5002021-12-16T13:14:52Zolivierkcfinder error 500Civicrm 5.43 and 5.44 under Drupal 8, launching kcfinder from ckeditor give an 500 error.
Php script integration/civicrm.php try to call civicrm.config.php located in web/libraries/civicrm/, and this file does not exist.
Copying this fil...Civicrm 5.43 and 5.44 under Drupal 8, launching kcfinder from ckeditor give an 500 error.
Php script integration/civicrm.php try to call civicrm.config.php located in web/libraries/civicrm/, and this file does not exist.
Copying this file from an Drupal 7 installation is not sufficent, because civicrm.settings.php is not searched in correct location.
```
--- ../../mcm65/sites/all/modules/civicrm/civicrm.config.php 2021-11-15 21:42:13.000000000 +0100
+++ libraries/civicrm/civicrm.config.php 2021-12-07 21:14:33.380121826 +0100
@@ -87,6 +87,11 @@
return $confdir;
}
+ if (file_exists($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . 'default' .
+ DIRECTORY_SEPARATOR . 'civicrm.settings.php')) {
+ return $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . 'default';
+ }
+
if (!file_exists($confdir) && !$skipConfigError) {
echo "Could not find valid configuration dir, best guess: $confdir<br/><br/>\n";
exit();
```
Another point, .htaccess in /web directory Deny access to most php files in public directory.
We must allow access to php files under kcfinder directory :
```
# For security reasons, deny access to other PHP files on public sites.
# Note: The following URI conditions are not anchored at the start (^),
# because Drupal may be located in a subdirectory. To further improve
# security, you can replace '!/' with '!^/'.
# Allow access to PHP files in /core (like authorize.php or install.php):
RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
# Allow access to test-specific PHP files:
RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php
# Allow access to Statistics module's custom front controller.
# Copy and adapt this rule to directly execute PHP files in contributed or
# custom modules or to run another PHP application in the same directory.
RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics.php$
RewriteCond %{REQUEST_URI} !/libraries/civicrm/packages/kcfinder/[a-z_]+\.php$
RewriteCond %{REQUEST_URI} !/libraries/civicrm/packages/kcfinder/.*/[a-z_]+\.php$
# Deny access to any other PHP files that do not match the rules above.
# Specifically, disallow autoload.php from being served directly.
RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]
```