Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Dolibarr
  3. custom folder for modules not working properly

custom folder for modules not working properly

Scheduled Pinned Locked Moved Dolibarr
2 Posts 2 Posters 22 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    Crush33
    wrote last edited by
    #1

    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.
    b.jpg

    here is the folder locating main.inc.php (/app/code/htdocs/)
    c.jpg

    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 :
    e.jpg

    is someone having the same issue ?

    thanks !

    1 Reply Last reply
    0
    • jamesJ Offline
      jamesJ Offline
      james
      Staff
      wrote last edited by
      #2

      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:

      cf420bdc-1153-417c-a6a4-0099ac6086f4-image.png

      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.

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Bookmarks
      • Search