Hi Arno,
I am running jDownloads 4.1.16 on Joomla 5.4.7 with PHP 8.2.30 on a Windows/WAMP development environment (Apache 2.4.68, MySQL 8.0.45). The site was migrated from Joomla 3.10 with jDownloads 3.9.8.7.
Problem: No file can be downloaded by any user, including Super User. After clicking the download button, the page redirects to the home page and if I go back to the download page shows: "You do not have permission to download the requested file."
What I have verified:
File physically exists on disk in the correct folder
cat_dir in xj7oe_jdownloads_categories matches the physical folder name
url_download in xj7oe_jdownloads_files contains the correct filename
User Groups Settings: download permission enabled for Super Users, Registered and Formazione groups
Tested with "Send Downloads using PHP Script" both enabled and disabled — same result
The download URL generated is: http://[ip]/index.php/component/jdownloads/send/[catid]-[cat-alias]/[fileid]-[file-alias]?Itemid=[id]
Download is logged in xj7oe_jdownloads_logs (counter increments) but file is never delivered
Debug mode enabled: no PHP error shown, no entry in PHP error log
Three native jDownloads menu items created (List All Categories, List All Downloads, List My Downloads)
Additional issue: "List My Downloads" view shows files from other users, not filtered by the logged-in user. Files are assigned to specific users via the user_access field in xj7oe_jdownloads_files.
task=download.send via direct URL goes to the home page without a PHP error in the log.
Tested on a clean install of jDownloads 4.1.16 (not updated).
Question: Is there a known issue with the ACL/assets table after migration from jDownloads 3.x to 4.x? Could the xj7oe_assets table entries for jDownloads be missing or corrupt after migration?
Thank you.
Hi,
thank you for the detailed report. We assume the mentioned version 4.1.16 is a typo and that you mean 4.1.6.
Your symptoms still look like a migration-related ACL/data consistency issue, so please run one additional Joomla ACL check in your own backend:
1. Go to: Users -> Debug User Group.
2. Select group: Registered (and then repeat for Super Users).
3. In filters, limit the list to jDownloads entries (com_jdownloads) only.
4. Focus on download-related actions and check effective Allow/Deny plus inheritance source.
5. Include component level, relevant category level, and affected single download items.
Please send screenshots of those filtered results.
Additionally, for 2-3 affected files, please share:
1. id
2. catid
3. access
4. user_access
5. created_by
And one quick runtime check:
Create one new category plus one new download now (not migrated data) and test whether download works there.
This will help us quickly separate ACL inheritance issues from migrated record/filter issues.
Hi Arno,
Thank you for your detailed instructions. Here are the results of all the checks you requested.
1. Debug User Group (Users → Debug Groups, group: Formazione / group_id=12)
All actions for com_jdownloads are shown in red (Denied) for the Formazione group, including the "Allows users in the group to download files" action.
Same result for Super Users group.
2. Data for 3 affected files (id, catid, access, user_access, created_by)
From production database:
id=701, catid=463, access=7, user_access=244, created_by=242
id=663, catid=187, access=7, user_access=247, created_by=242
id=4636, catid=7, access=7, user_access=244, created_by=242
3. Test with newly created category and file (not migrated data)
We created a brand new category "TEST2026" and a new file assigned to user "lugiann" as sole owner. Result: same error — "You do not have permission to download the requested file." The problem affects both migrated and newly created files.
4. xj7oe_assets table — ACL contradiction
The assets table shows group 12 (Formazione) explicitly allowed:
com_jdownloads (id=9542, parent_id=1, parent=root.1):
rules = {"download":{"1":1,"2":1,"12":1,"8":1}}
com_jdownloads.category.1 (id=9498):
rules = {"download":{"1":1,"2":1,"12":1,"8":1}}
So the assets table shows group 12 as explicitly Allowed (value=1), but the Debug Groups tool shows all actions as Denied. This is a direct contradiction.
5. jDownloads Options → Permissions
In the jDownloads backend Options → Permissions tab, the Formazione group has only one permission enabled: Download Files = Allowed.
6. Summary of the contradiction
xj7oe_assets: group 12 = explicitly Allowed (1)
jDownloads Options → Permissions: Formazione = Allowed
Joomla Debug Groups: all com_jdownloads actions = Denied (red)
Result: no user can download any file
This contradiction between the assets table and the Debug Groups output suggests either a broken ACL inheritance chain or a bug in how jDownloads 4.1.6 registers its permissions with Joomla's ACL system during installation on Joomla 5.4.7 / PHP 8.2.
Environment:
Joomla 5.4.7
jDownloads 4.1.6 (clean install, not upgrade)
PHP 8.2.30
MySQL 8.0.45
Windows/WAMP development environment
Migrated from Joomla 3.10 + jDownloads 3.9.8.7
Please let us know what additional information you need.
Thank you.
(https://drive.google.com/file/d/1oZaVIUbLCPfHI3YurLARqljLGMhaW6Nq/view?usp=sharing)
Hi kode,
thank you, this is very useful information.
I agree we should now try a direct, controlled repair path for your installation.
Important first:
- Please create a full DB backup.
- We only touch jDownloads-related assets/ACL.
- We do not run any global Joomla ACL reset.
## Step A (quick, low risk)
1. Reinstall jDownloads 4.1.6 over the current install.
2. Run Joomla Database Fix: System -> Maintenance -> Database -> Fix.
3. Open jDownloads -> Options -> Permissions and click Save once.
4. Clear Joomla cache.
5. Test:
- one new test file with access = Public
- one affected existing file
If still denied, continue with Step B.
## Step B (targeted SQL checks)
Please run these queries and post output/screenshots.
SELECT name, COUNT(*) AS cnt
FROM #__assets
WHERE name = 'com_jdownloads'
OR name LIKE 'com_jdownloads.category.%'
OR name LIKE 'com_jdownloads.download.%'
GROUP BY name
HAVING COUNT(*) > 1
ORDER BY cnt DESC, name ASC;
SELECT id, parent_id, lft, rgt, level, name, title, rules
FROM #__assets
WHERE name = 'com_jdownloads'
ORDER BY id;
SELECT 'category' AS row_type, c.id, c.asset_id
FROM #__jdownloads_categories c
LEFT JOIN #__assets a ON a.id = c.asset_id
WHERE c.asset_id IS NULL OR c.asset_id = 0 OR a.id IS NULL
UNION ALL
SELECT 'download' AS row_type, d.id, d.asset_id
FROM #__jdownloads_files d
LEFT JOIN #__assets a2 ON a2.id = d.asset_id
WHERE d.asset_id IS NULL OR d.asset_id = 0 OR a2.id IS NULL
ORDER BY row_type, id;
SELECT d.id, d.catid, d.access, v.title AS access_level_title, d.user_access, d.created_by
FROM #__jdownloads_files d
LEFT JOIN #__viewlevels v ON v.id = d.access
WHERE d.id IN (701, 663, 4636)
ORDER BY d.id;
SELECT id, title, rules
FROM #__viewlevels
WHERE id = 7;
## Step C (only if duplicates were found)
Run this only if Step B query 1 returns duplicates:
DELETE a
FROM #__assets a
JOIN (
SELECT name, MIN(id) AS keep_id
FROM #__assets
WHERE name = 'com_jdownloads'
OR name LIKE 'com_jdownloads.category.%'
OR name LIKE 'com_jdownloads.download.%'
GROUP BY name
HAVING COUNT(*) > 1
) k ON k.name = a.name
WHERE a.id <> k.keep_id;
Then:
1. Rebuild asset tree in Joomla.
2. Reinstall jDownloads 4.1.6 once more.
3. Retest downloads.
If you post the Step B results, we can give you the exact final SQL for your dataset.
Subject: Re: Step B results - jDownloads ACL debug
Hi Arno,
Here are the results of your Step B queries.
Query 1 — Duplicates in assets:
Empty result — no duplicates found.
Query 2 — com_jdownloads asset:
id=9542, parent_id=1, lft=2027, rgt=17068, level=1
name=com_jdownloads, title=com_jDownloads
rules={"download":{"1":1,"2":1,"12":1,"8":1}}
Query 3 — Missing assets:
Empty result — no missing assets for categories or files.
Query 4 — Specific files:
id=663, catid=187, access=7 (FORMAZIONE), user_access=247, created_by=242
id=701, catid=463, access=7 (FORMAZIONE), user_access=242, created_by=242
id=4636, catid=7, access=7 (FORMAZIONE), user_access=242, created_by=242
Query 5 — Viewlevel 7:
id=7, title=FORMAZIONE, rules=[2,12,8]
Summary of the contradiction:
xj7oe_assets for com_jdownloads: group 12 (Formazione) = explicitly Allowed ("12":1)
xj7oe_viewlevels id=7 (FORMAZIONE): contains groups [2,12,8] — correct
access=7 on files = FORMAZIONE access level — correct
jDownloads Options → Permissions: Formazione group = Allowed for download
BUT: Joomla Debug Groups (Users → Debug Groups → group Formazione) shows ALL com_jdownloads actions as Denied (red)
AND: actual download attempt returns "You do not have permission to download the requested file" for ALL users including Super User
Additional context:
New clean install of jDownloads 4.1.6 (not an upgrade — fresh installation)
Same result with newly created test files and user (not migrated data)
Joomla 5.4.7, PHP 8.2.30, MySQL 8.0.45, Windows/WAMP
Migrated from Joomla 3.10 + jDownloads 3.9.8.7
All asset data looks correct but downloads are denied for everyone. What do you suggest as the next step?
Thank you.