• 0

PHP includes with sub folders... how?!


Question

Hey.

Im trying to change my site to use subfolders. At the moment i have all the pages, CSS and a header.php in the root. Now i have:

header.php

footer.php

index.php

css.css

products/page1.php

products/page2.php

products/page3.php

etc

The include works from index.php, but not from page1.php I understand that this is because from page2 its looking for the header.php in the products/ folder, but i dont know how to fix it. Ive tried

<?php include ('../header.php'); ?>

And that didnt work.

Any ideas would be greatly appreciated.

Link to comment
https://www.neowin.net/forum/topic/626575-php-includes-with-sub-folders-how/
Share on other sites

8 answers to this question

Recommended Posts

  • 0

is the header included in the product pages? (page1.php, page2.php, page3.php etc) ?

I assume the product pages are included in index.php and the problem your having is that it cant find the header file from the product page because its looking in the wrong place, is that right? :p

I think what you need to do is take the header includes out of your pages and just put use one include header statement at the top of index.php, that way you only have one statement and its looking in the right place for it.

  • 0

Try ./ because that looks for the root folder.

If I understand you correctly your going from

products / page#.php

to

header.php in root.

If thats the case, do ./header.php and it should go to the root folder and then find header and it should.

if your going from

root

to

products/page#.php

Then do include("products/page#.php")

This is all rough but it should work.

I hope I understood you right.

Cheers.

  • 0

assuming your webhost allows you to use .htaccess to set php settings, set an includes directory. for example here's mine.

php_value include_path ".:/users/m/marc2003/includes"

i now place any common php files inside this folder. now i can call on the file simply using

include 'header.php';

folder structure is now irrelevant as php will check in my includes folder first.

  • 0
  Sikh said:
Try ./ because that looks for the root folder.

afaik, ./ is only a reference to the current working directory, it is not a link to your webroot. in this case, you may be correct, but if the script that was running is actually in mydomain.ext/some_folder/ rather than just in mydomain.ext/, then ./ would refer to the subfolder, not the root folder.

  • 0

I usually get around this by including a variable somewhere higher up that defaults to "./" and use that when trying to do my includes. Change it to manually perhaps if your in a sub directory.

Probably not best way.. you could use $_SERVER["DOCUMENT_ROOT"] I think which will get you the path directly to header.php if your in a sub folder.

  • 0
  marc2003 said:
assuming your webhost allows you to use .htaccess to set php settings, set an includes directory. for example here's mine.

php_value include_path ".:/users/m/marc2003/includes"

i now place any common php files inside this folder. now i can call on the file simply using

include 'header.php';

folder structure is now irrelevant as php will check in my includes folder first.

<?php

// Works as of PHP 4.3.0

set_include_path('/inc');

// Works in all PHP versions

ini_set('include_path', '/inc');

?>

  • 0

How rude of me, i completely forgot i made this thread!

Well, thanks for all the responses. Ive managed to fix it now, but ill give a nice detailed explanation of what i wanted and how i fixed it for the benefit of others.

Basically, I was trying to include my header (which is in my root directory) from a page in a sub directory.

I was able to call the header itself with

&lt;?php include ('../header.php'); ?&gt;

- but my problem was, the header contained my nav bar and my css <a href ="style.css">

By doing it this way, page in the subfolder was looking for the style.css in the subfolder directory, not in the root where it was with the header.

So, not only did i need to put

&lt;?php include ('../header.php'); ?&gt;

in each of the pages in the sub folders, i also needed to change my reference to the css to

href="/style.css"

- see the "/"

Finally, the reason i didnt use $_SERVER["DOCUMENT_ROOT"] is because im doing the development in a XAMPP test server on my pc - with my files not in the root. So i thought it would all screw up once i uploaded to my webserver. Plus, because im only going to need to go down to one sub folder, the "../" is a good enough solution for me.

Thanks for all the replies though - good to know theres a decent community here.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • It's not really related to the speed of the system. A menu that appears instantly is of course going to feel more responsive than a menu that slides or fades into view.
    • How did two companies come up with the same stupid name for the same stupid type of product?
    • I honestly think this does not make any noticable difference to anyone with a PC with average specs.
    • OpenAI takes down all traces of Jony Ive "io" deal following court order by David Uzondu Early this month, we reported that OpenAI was working on a mobile gadget in the form of a screenless, wearable device, born from a newfound partnership (friendship?) between renowned former Apple designer Jony Ive and OpenAI CEO Sam Altman. The announcement came with a video that had the two men talking about the future of technology. Well, that video has now been made private on YouTube, and the original announcement page has been taken down. The whole thing is on pause because of a simple trademark dispute. OpenAI was forced to pull the materials following a court order. If you visit the original announcement page, it now says: Despite the legal hassle over the name, the actual business deal seems safe. According to Bloomberg's Mark Gurman, the acquisition itself is unaffected by the complaint. So, who is iyO (pronounced eye-oh), the other party in this mess? If the name sounds unfamiliar, its background will not. This iyO company is an independent startup that graduated from X, Alphabet's moonshot factory, and yes, that is the same Alphabet, the parent company of Google. iyO claims to be on a mission to bring "natural language computing" to the masses. A quick look shows two products listed on its website: the Vad Pro, a high-end wired audio device for professionals, and iyO One, a set of AI-powered earbuds the company is calling the "world's first audio computer." A judge reportedly found its trademark lawsuit against OpenAI credible enough to issue the restraining order, suggesting the ChatGPT creator's video could create genuine consumer confusion between the two similarly named ventures.
    • I've set since XP - Best performance in the Performance settings. 11 included. I enable only the show shadows after that, so I can see better fonts and mouse.. But hardly I can say I can see a difference today.
  • Recent Achievements

    • Conversation Starter
      Brett76 earned a badge
      Conversation Starter
    • One Month Later
      Miguel Batista earned a badge
      One Month Later
    • Dedicated
      moojay67 earned a badge
      Dedicated
    • One Month Later
      Jim Dugan earned a badge
      One Month Later
    • First Post
      Johnny Mrkvička earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      655
    2. 2
      Michael Scrip
      229
    3. 3
      ATLien_0
      220
    4. 4
      Steven P.
      150
    5. 5
      Xenon
      143
  • Tell a friend

    Love Neowin? Tell a friend!