Relationship Graph
View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0021584 | mantisbt | customization | public | 2016-08-02 14:15 | 2026-02-17 03:15 |
| Reporter | atrol | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | confirmed | Resolution | open | ||
| Summary | 0021584: core_path directory can't be moved outside the web root | ||||
| Description | After a fresh install running admin/check.php gives WARN for check: Moving the directory outside the web root does not work as there is a hardcoded path in core.php
constant_inc.php has been moved to core folder in 2003 (release 0.18a1), see commit MantisBT master 5cad7a7e | ||||
| Tags | No tags attached. | ||||
| has duplicate | 0028333 | closed | atrol | Cannot move core folder outside the mantis webroot |
| has duplicate | 0034846 | closed | dregad | move core directory outside webroot not work |
| has duplicate | 0036882 | closed | atrol | Recommendations for safe installation paths for MantisBT are not possible |
| related to | 0024389 | resolved | dregad | Cannot create Issue when core path is out of MantisBT root |
|
This problem occurs because when core.php is loaded the config file has not been read yet. So if you set $g_core_path in /config/config_inc.php the variable is still not defined at that moment. A work around is to move the whole core directory to an outside path. Then recreate the core folder and copy the file constant_inc.php to that newly created core folder from the outside path core folder. This will result in an empty core folder that only contains constant_inc.php. You can also move the config folder to the outside location. And then you have to still keep the config folder and /config/config_inc.php. But you can edit that new config and change its content to only the paths and the include_once( $g_config_path . 'config_inc.php' ). Here is the snippet: include_once( $g_config_path . 'config_inc.php' ); Hope this helps anybody who had the same problem. |
|
|
I tried this with 2.11.1 but when I tried to go to the login page, I get a blank. only when I put the config back in the mantisbt root directory does this work. This also happens when i move the core as well. Please advise as to what I could be doing wrong. |
|
|
Note the variable $ t_local_config = getenv ('MANTIS_CONFIG_FOLDER') in config_defaults_inc.php It extracts the path to your "config" folder from the environment variable of your web server. |
|
|
Indeed, there is a problem. Sorry... |
|
|
still there in 2.24.1 |
|
|
Even if one updates the variables to point to the outside, apparently path to "core" folder is hardcoded at https://github.com/mantisbt/mantisbt/blob/master/core.php#L67, so it makes no sense to copy core folder outside of webroot. Update: found several more hardcoded paths:
=> so those checks don't make any sense now, there is no way to fix them. Please remove them until it's possible to make them green without dirty hacks. |
|
|
I've just run into this too updating to 2.24.1. (Also I don't recall this warning in previous versions.) |
|
|
Just as a datapoint: I installed a fresh 2.25.2 on a fresh server and saw this again. |
|
|
If you set the $g_core_path, $g_class_path, $g_library_path, and $g_language_path variables to their own unique paths and set the MANTIS_CONFIG_FOLDER environment variable to the path to the config_inc.php file, MantisBT will return a web server error: "500 Internal server error", and the PHP logs will show multiple errors. /core.php:69:
The "/core" folder is located in a different location. Probably can be replaced with: /core/email_api.php:79:
/core/email_api.php:1580:
/classes/EmailSender.class.php:18:
/classes/EmailSenderPhpMailer.class.php:23:
The "/classes" folder is no longer available. These lines can simply be removed, since the class autoloader is used anyway. /core/logging_api.php:325:
The "/core" folder is located in a different root folder. We probably need to use the /core/commands/IssueViewPageCommand.php:36:And 12 files next to it. The "/core" folder is not located next to "/api".
Replace with:
/admin/check/check_paths_inc.php:73:MantisBT thinks that for example the "/mantisbt-config" folder is inside the "/mantisbt" folder.
Needs to add "/" so avoid comparing of partial directory names: |
|
I could not find any written trace explaining why the file was moved from Anyway, not knowing the original reason, I am OK with your proposal to revert that change and put the constants back in root as I can't think of any issue this would cause.
I don't know what makes you say that, the directory is definitely still there...
I believe this would fix 0024389.
I don't understand why this would be needed. Can you clarify / explain what you mean ? |
|
These statements are made on the assumption that the variable
The string “/mantisbt” is a substring of “/mantisbt-config”, which causes the check to incorrectly report that the directory “/mantisbt” is inside the directory “/mantisbt-config”. Adding “/” will make the string “/mantisbt/” and it will no longer be a substring of “/mantisbt-config”. |
|
|
Thanks for the feedback, I get it now. |
|
related to
child of
duplicate of