I'm making my software compatible with Magento 2. I need to update a PHP file (bundled with the software) that is required to communicate with Magento.

I've read that the root folder can be either the Magento installation root folder or the pub folder.

If it's in the root folder, we must write:

require __DIR__ . '/app/bootstrap.php';

If it's in the pub folder, we must write:

require realpath(__DIR__) . '/../app/bootstrap.php';

Is there a reliable and elegant way to include bootstrap.php if the script file is in the root folder or the pub folder ?

The code should work in both cases.

  • 3
    Can you not integrate it into Magento as an actual proper Magento module, with a real controller and request path? That way you don't even need to worry about the root folder.
    – Ryan Hoerr
    Apr 19 '17 at 20:24
  • I'm also going to make a Magento module. It will be better and I'll be able to have a configuration panel in the Magento backoffice for the software. Apr 20 '17 at 9:09
  • But I'll keep the bundled PHP file as an option. It simplifies the installation for people who just want to try the software. Most of my customers are shop owners. Installing a module may be too difficult and technical and may discourage them from trying the software with their shop. Here's the current installation process: benabee.com/en/downloads . It's easy but sometimes people upload the file in the wrong folder or have permission issues. Apr 20 '17 at 9:25

You can use absolute path instead of relative path as below.

$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require "$root/app/bootstrap.php";
  • I tested the code. It works fine in both case. Thanks Apr 20 '17 at 9:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.