• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 106
  • Last Modified:

include path

I have a file located here:
     mySite.com/DataTables/Editor/php/Bootstrap.php

There is a line that contains:
        include( dirname(__FILE__).'/config.php' );

But I need to use this for various projects that link to different databases and i don't think I want all the files in DataTables in each project folder.  So I need config to be in each project folder:
   mySite.com/Project1/lib/config.php
   mySite.com/Project2/lib/config.php


Instead of using  dirname(__FILE__) Is there a way that I can get to the correct project?  or is dirname going to return what I want?
0
UniqueData
Asked:
UniqueData
  • 3
  • 2
1 Solution
 
Ray PaseurCommented:
What dirname() will return can be discerned via these pages.
http://php.net/manual/en/function.dirname.php
http://php.net/manual/en/language.constants.predefined.php

In the case with __FILE__, php says, "The full path and filename of the file with symlinks resolved. If used inside an include, the name of the included file is returned."
0
 
Brian TaoSenior Business Solutions ConsultantCommented:
You can (at least) do one of the follwoing:
1) add your library directory to "include_path" directive in php.ini, or
2) without access to php.ini, use relative path in your code, for example, something like: include("../../../library/config.php");
0
 
UniqueDataAuthor Commented:
but the thing is there will be multiple config files, one in each project folder, each with the connection string for the database for that project.
           
There is a  file is located in mySite.com/DataTables/Editor/php/Bootstrap.php, outside of any of the project folders, so that I don't have to copy all the DataTables files into each project folder.  Each project will have it's own page that has the statement:
      include( "../../DataTables/Editor/php/DataTables.php" );

This DataTables.php is the one with the statement:  include( dirname(__FILE__).'/config.php' );

So I need DataTables.php to know that it is being included from mySite.com/Project1/ or mySite.com/Project2/, etc.

So I guess, long story short:  how to the path of the file that called it?
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
UniqueDataAuthor Commented:
just thought of another way to clarify (I hope)

www.mySite.com/Project1/lib/config.php (contains connection info for database that Project1 uses)
www.mySite.com/Project1/lib/getMathFacts.php

www.mySite.com/Project2/lib/config.php (contains connection info for a different database that Project2 uses)
www.mySite.com/Project2/lib/getStateCapitols.php

each of the "get" php files has the same line:
      include( "../../DataTables/Editor/php/DataTables.php" );

www.mySite.com/DataTables/Editor/php/DataTables.php needs to include the config file.
        So if it was called from Project1 it includes www.mySite.com/Project1/lib/config.php.  
        If it is called from Project2 it includes www.mySite.com/Project2/lib/config.php
0
 
UniqueDataAuthor Commented:
oh my goodness.  I can't believe I didn't think of this...

right before I have my include DataTables I set a variable:
   $myPath = dirname(__FILE__), which would get the path of the current project

Then, in DataTables I use this in the include:
   include( $myPath.'/config.php' );
0
 
Ray PaseurCommented:
Then, in DataTables I use this in the include:
   include( $myPath.'/config.php' );
If you want a little more "portability" you may use the PHP constant DIRECTORY_SEPARATOR like this.  It's context-aware and will produce the correct type of slash for the operating system.

include( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php' );

In any case, be sure to read the man page carefully because PHP is not very clear about how it handles file paths!
http://php.net/manual/en/language.constants.predefined.php
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now