• 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

    • Windows 11 receives a handful of new AI features by Taras Buria Microsoft is supercharging its operating system with a handful of new AI-powered features. Those with compatible computers (mostly Copilot+ PCs) can download a new Windows 11 update that introduces new AI experiences. One of the biggest updates is the Settings app, which now features agentic search to understand complaints about your computer. You can click the search box and tell Windows what is wrong. For example, "my mouse cursor is too small." Windows will then process your request and suggest taking action on your behalf. You can also ask for specific changes like, "change my screen resolution to 1920x1080." The Settings agent is now available for users with Snapdragon-powered Copilot+ PCs. It is coming soon to Intel and AMD-based Copilot+ PCs. Click to Do has received several new actions: Practice in Reading Coach helps improve reading skills by giving feedback and offering suggestions on how to improve. Read with Immersive Reader displays text in a distraction-free environment with the ability to adjust text size, spacing, font and background theme, have text read aloud, break words into syllables and highlight parts of speech. The picture dictionary shows images for unfamiliar words. Draft with Copilot in Word turns a portion of text into a full draft. Actions in Microsoft Teams let you click an email to send a message or schedule a meeting. More AI is available in the Photos app. After a couple of months in testing, the Relight feature is now rolling out, allowing users to adjust lights with AI. You can place three light sources or use built-in presets to edit your photos. Like with the Settings app, this feature is currently available to Snapdragon-powered devices only. Paint now has a sticker generator and a new object select tool that uses AI to isolate the object and edit individual elements, even if they are part of one layer. Snipping Tool has received the "Perfect Screenshot" feature to help you select parts of the screen for a proper cropped screenshot, and a new Color Picker to read colors on the screen in different formats (available on all PCs, not only Copilot+ PCs). Finally, the Copilot app now supports Highlights, a new feature that enables Copilot to show you how to perform specific tasks in the current app on the entire desktop. Today's updates are not just about AI and sticker generation. Microsoft is also improving the performance and security of its system with a redesigned blue screen of death and the new Quick Machine Recovery system. You can read more about those changes here. If you want to get all these updates today, download the latest non-security update for Windows 11 version 24H2, which is now available.
    • Well their mistake was choosing Microsoft, the backstabbers
    • Yet my Surface Pro 7+ was running ok with 23H2, only having issues with the laggy-mess that's the new File Explorer...
    • Brave browser blocks Windows feature that takes screenshots of everything you do on your PC by David Uzondu If there's anything Microsoft Build 2024 will be remembered for, it's the introduction of the controversial Windows Recall on its new Copilot+ PCs. Pitched as a "photographic memory" for your computer, this feature works by constantly taking screenshots of your activity to build a detailed and searchable timeline of everything you have ever seen or done. Almost immediately, critics and security researchers labeled the feature a privacy nightmare, pointing out that a single piece of malware could gain access to a user's entire digital life. In response to the backlash, Microsoft promised that users will be able to filter which apps get recorded, but some developers are not waiting around. Just about a month after the feature became generally available for Copilot+ PCs (it is now rolling out to users in Europe), some app developers took matters into their own hands to protect their users. One such company was Signal, which implemented an opt-out feature called "Screen Security" to prevent its chats from being captured. It cleverly uses a Digital Rights Management (DRM) flag to black out the application window during a screenshot attempt, using the same technology that streaming services like Netflix use to prevent people from recording movies. Now, Brave Browser has joined the party, announcing on X that it will block Recall by default with its v1.81 update, which is expected in the coming weeks. While Microsoft stated that Recall would not capture content from private browsing windows, Brave's new update just tells the Windows operating system that all of its browser windows are private. This prevents Recall from snapshotting anything you do in Brave, not just the activity in a designated private tab. In its announcement, the company did give Microsoft some credit for making changes following the initial public outcry, such as making Recall an opt-in feature. However, the company still feels that giving any application unrestricted access to a user's browsing history is a huge risk. If you, for some reason, like Windows Recall, you can disable the upcoming protection by navigating to Settings, then Privacy and Security, and toggling off the "Block Microsoft Recall" option.
    • I have the Tab A9+ also, and I agree with all your points. I really like this tablet.
  • Recent Achievements

    • Week One Done
      SmileWorks Dental earned a badge
      Week One Done
    • Community Regular
      vZeroG went up a rank
      Community Regular
    • Collaborator
      Snake Doc earned a badge
      Collaborator
    • Week One Done
      Snake Doc earned a badge
      Week One Done
    • One Month Later
      Johnny Mrkvička earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      587
    2. 2
      Michael Scrip
      199
    3. 3
      ATLien_0
      192
    4. 4
      +FloatingFatMan
      131
    5. 5
      Xenon
      122
  • Tell a friend

    Love Neowin? Tell a friend!