custom folder for modules not working properly
-
Hi folks
I'm trying to put some external modules from https://dolistore.com but folder mounting seems wrong because almost all modules need to have access to "main.inc.php" and they're searching for [../../../main.inc.php]-like folder instead of [../../../../code/htdocs/main.inc.php]
This result in error "Include of main failed" when trying to open a custom module page.
see below :
here is an example of custom module, it looks for main.inc.php 1 + 2 + 3 folders above and fail.
here is the folder locating main.inc.php (/app/code/htdocs/)
below I open /app/data/custom/ouvrage/list.php (which is a custom module) and modified inside the green rectangle to have the pass correctly fetched :
is someone having the same issue ?
thanks !
-
Hello @Crush33
With apps that allow plugins or extensions, it is almost impossible to test and verify everything that is out there.
It is the developer's responsibility to provide extensions that work.For the future, please don't use screenshots for code.
I can't copy-paste some of the PHP code for testing since it is a picture.
I was able to get the code via OCR and put it into/app/data/custom/this.php
<?php //phpinfo(); //var_dump($_SERVER["CONTEXT_DOCUMENT_ROOT"]); // Load Dolibarr environment $res = 0; // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; } // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j= strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i --; $j --; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i+1)) ."/main.inc.php")) { $res = @include substr($tmp, 0, ($i +1)) ."/main.inc.php"; } if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i+1))) ."/main.inc.php")) { $res = @include dirname(substr($tmp, 0, ($i+1)))."/main.inc.php"; } // Try main.inc.php using relative path if (!$res && file_exists(" .. /main.inc.php")) { $res = @include " .. /main.inc.php"; } if (!$res && file_exists(" .. / .. /main.inc.php")) { $res = @include " .. / .. /main.inc.php"; } if (!$res && file_exists(" .. / .. / .. /main.inc.php")) { $res = @include " .. / .. / .. /main.inc.php"; } if (!$res) { die("Include of main fails"); }
When I access this file with the browser path
$DOMAIN/custom/this.php
I get:Simply testing:
<?php //phpinfo(); var_dump($_SERVER["CONTEXT_DOCUMENT_ROOT"]);
This shows:
string(16) "/app/code/htdocs"
And with this as path to
main.inc.php
is working.