3

I am using include function and it is giving errors. That is file not found. In the root directory I have - index.php and config.php

index.php includes config.php and has some other data.

config.php has database details and includes function/function.php

There is a folder user and it has a file calculate.php in calculate.php I have included AJAX functionality and a file is loaded in it on AJAX call. File is cal2.php and it is located in user folder. Now this, cal2.php has a include function for config.php like:

include "../config.php";

When this cal2.php is loaded from calculate.php

function/function.php file is not loaded. It shows file not found for function/function.php

So, file structure is:

  • root
  • /index.php
  • /config.php
  • /user/calculate.php
  • /user/cal2.php
  • /function/function.php

How to proceed and not have function.php include error for cal2.php

kb0000
  • 444
  • 3
  • 6
  • 18
  • how are you loading function/function.php, in cal2.php? please post that code. – Shamim Hafiz - MSFT Dec 19 '10 at 09:12
  • 1
    2 rules to follow. 1. **Always** post actual code. 2. **Always** post exact and complete error message. – Your Common Sense Dec 19 '10 at 09:29
  • As for your problem - it's easy. Just use existing path. there is no `/user/function/` folder in your system. – Your Common Sense Dec 19 '10 at 09:33
  • Actually, it isn't that easy. Following the instructions the OP has given for creating the filesystem to the letter and using 100% relative includes exactly as described does not cause a problem to occur. It works 100% a-ok without changing a single thing. – Shabbyrobe Dec 19 '10 at 11:24
  • @Shabbyrobe the path can be relative or absolute, but first of all it should be **correct,** pointing to the existing file. So, the OP have to determine that path first. A static one. And only then start building it dynamically – Your Common Sense Dec 19 '10 at 13:50

3 Answers3

6

You should change config.php to use an absolute path to functions.php. If you have PHP 5.3 or greater, do it like this:

include __DIR__.'/functions/functions.php';

If you are still using PHP 5.2 (or, god forbid, something earlier), you can do it this way:

$dir = dirname(__FILE__);
include $dir.'/functions/functions.php';

The __FILE__ magic constant always contains the value of the current PHP file name, so the dirname(__FILE__) call will give you the full filesystem path of the current script.

Martin
  • 22,212
  • 11
  • 70
  • 132
Shabbyrobe
  • 12,298
  • 15
  • 60
  • 87
  • it will help include functions into config, but won't help include config into everything else. Don't use relative paths. use absolute ones. – Your Common Sense Dec 19 '10 at 09:37
  • `__DIR__` and `dirname(__FILE__)` *are* absolute paths – Shabbyrobe Dec 19 '10 at 11:26
  • It's still relative, silly. formally absolute, but it's built from the relative position from the current file. move that file somewhere else and your *relative* path would fail. That's why an absolute path should be always used, based on some constant. – Your Common Sense Dec 19 '10 at 13:54
2

Use absolute path to include file:

$_SERVER['DOCUMENT_ROOT'].'/function/function.php'
Rostyslav Dzinko
  • 39,424
  • 5
  • 49
  • 62
Pradeep Singh
  • 3,582
  • 3
  • 29
  • 42
-1

All problems here

/user/cal2.php
/function/function.php

you need to include such a way:

include('../config.php');

BUT I had this problem to, and I propose you to include files in the header of each page. Config you must inckude in the header of each page.

Read this, think it helps:

problems with global variables

Community
  • 1
  • 1
yozhik
  • 4,644
  • 14
  • 65
  • 98