• 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

    • I'm old I guess, first thing I think of is just regular input/output.
    • Now, kids, Dan O'Dowd is what we call a professional hater.
    • Billionaire slams 'Tesla Cultists' for praising Robotaxi, says it's 5+ years behind Waymo by David Uzondu Image via Depositphotos.com The Tesla Robotaxi program has kicked off in Austin, Texas, and reactions are pouring in from all corners of the internet. A select group of investors and influencers have been invited to try the service, which operates within a limited area of South Austin for a price of $4.20. While the vehicles are operating without anyone in the driver's seat, the program has specific rules for this pilot phase, including a human "safety monitor" who rides along in the passenger seat just in case things go sideways. Of course, the launch did not go unnoticed by Tesla's most vocal and well-funded critic, Dan O'Dowd. O'Dowd is the billionaire founder of a group called The Dawn Project, which has dedicated itself to highlighting what it calls critical safety failures in Tesla's Full Self-Driving software. He refers to himself as an expert in creating "unhackable" software for military and aerospace clients, and ran for U.S. Senate back in 2022 on a single-issue platform: to "make computers safe for humanity" by banning Tesla's FSD. In 2023, He was banned from advertising on X after He made promoted posts that show Tesla FSD among other things, failing to stop at Stop signs. Last year, his group, The Dawn Project, paid for a Super Bowl ad, where a Tesla equipped with FSD did not act on a child-sized mannequin in the road. That commercial ends with a message, urging parents to "boycott Tesla to keep your kids safe." Today, O'Dowd took to X to slam the launch of the Robotaxi service, saying the "Tesla Cultists are celebrating victory" over a system he believes is years behind the competition (especially Waymo). He pointed out that with only fourteen cars operating for half the day, the system was already making significant errors, a rate he claims is consistent with community-tracked FSD data. The videos shared by the creators (Rob Maurer and Ed Niedermeyer), O'Dowd mentioned in his post, appear questionable, depending on your perspective. In Maurer's video, a trip that was otherwise smooth had a few unnerving seconds of the vehicle slightly swerving into the wrong lane, correcting itself, swerving again, correcting itself, and then finally settling. The other video from Ed Niedermeyer shows something entirely different. Niedermeyer captured a Tesla Robotaxi approaching an "extensive crime scene" with multiple police vehicles parked on the side of the road. On his personal Bluesky account (Ed stopped posting on X late last year, in protest of Musk), He claims the Tesla braked hard twice for no clear reason. In his commentary, Niedermeyer argued the car "shouldn't react to any of these police vehicles," and that it was concerning how it reacted to some but not others, before stopping in the "middle of the road instead of defaulting to a minimal risk condition."
    • Arch is now also using Wayland as the default session for Plasma 6.4, with X11 session becoming optional (so upgrading to Plasma 6.4 on X11 Arch might need manual intervention). It's been well over a decade in making, but I guess the time for Wayland to be the default is finally upon us.
  • Recent Achievements

    • Week One Done
      ravenmanNE earned a badge
      Week One Done
    • 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
  • Popular Contributors

    1. 1
      +primortal
      663
    2. 2
      Michael Scrip
      229
    3. 3
      ATLien_0
      219
    4. 4
      Steven P.
      148
    5. 5
      Xenon
      141
  • Tell a friend

    Love Neowin? Tell a friend!