• 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

    • Microsoft PC Manager 3.17.4.0 (Offline Installer) by Razvan Serea With Microsoft PC Manager, users can easily perform basic computer maintenance and enhance the speed of their devices with just one click. This app offers a range of features, including disk cleanup, startup app management, virus scanning, Windows Update checks, process monitoring, and storage management. Microsoft PC Manager key features: Storage Manager- easily uninstall infrequently used apps, manage large files, perform a cleanup, and set up Storage Sense to automatically clear temporary files. Health Checkup feature -scans for potential problems, viruses, and startup programs to turn off. It helps you identify unnecessary items to remove, optimizing your system's performance. Pop-up Management - block pop-up windows from appearing in apps. Windows Update - scans your system for any pending updates. Startup Apps - enable or disable startup apps on your PC, allowing you to optimize your system's startup performance. Browser Protection - rest assured that harmful programs cannot alter your default browser. Also enables you to change your default browser. Process Management - allows you to conveniently terminate any active process, ensuring optimal system performance and resource utilization. Anti-virus protection - Fully integrated with Windows Security. Safeguard your PC anytime. Quick Steps: Download Microsoft PC Manager Offline Installer (APPX/MSIX) with Adguard Adguard serves as a third-party online service, offering a user-friendly method for directly downloading appx, appxbundle, and msixbundle files from the Microsoft Store. Official download links will be generated for both the app's various versions and its dependency packages. How to download Microsoft PC Manager Offline Installer (APPX/MSIX) 1. Initially, you must find the app URL within the Microsoft Store. Access the Microsoft Store via your browser and search for "Microsoft PC Manager". Once located, copy the app URL, which includes the product ID, either from the address bar or from the provided link below. https://apps.microsoft.com/detail/9PM860492SZD 2. Now paste the app URL into the designated area, then click the check mark button to produce a direct download link. 3. To download, right-click the relevant link and select “Save link as…” from your browser's menu. Occasionally, Microsoft Edge may flag the download as insecure. In such cases, consider utilizing alternative browsers such as Google Chrome or Firefox to successfully complete the download. Microsoft PC Manager is a completely free tool optimized exclusively for use on Windows 10 (version 1809 or newer) and Windows 11. Download: Microsoft PC Manager 3.17.4.0 | from Microsoft Store View: Microsoft PC Manager Home Page Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • You might want to update to 1TB drive.  They are not very expensive these days, there are plenty of options - simple look I would think you could find a 1TB ssd or even nvme somewhere between 50 and 100 bucks. when I have moved to larger ssds in laptop in the past, you can just connect the drive via usb - image.  Then take the old drive out, put in the new drive and there you go..  If your concerned about how much space you have left this prob your best bet..   
    • I see! Wasn’t aware of that. Even though they started off with desktop app for Mac before Windows. Should be on it’s way soon! 🤞
    • support.microsoft.com/en-us/topic/microsoft-defender-update-for-windows-operating-system-installation-images-1c89630b-61ff-00a1-04e2-2d1f3865450d
    • It's a Developer Beta 1 not even a Public or User Beta, I doubt any of the design is 100% finalized yet.
  • Recent Achievements

    • First Post
      Johnny Mrkvička earned a badge
      First Post
    • Week One Done
      viraltui earned a badge
      Week One Done
    • One Month Later
      serfegyed earned a badge
      One Month Later
    • Dedicated
      firey earned a badge
      Dedicated
    • Dedicated
      fettermanj earned a badge
      Dedicated
  • Popular Contributors

    1. 1
      +primortal
      627
    2. 2
      ATLien_0
      223
    3. 3
      Michael Scrip
      217
    4. 4
      Xenon
      149
    5. 5
      Steven P.
      139
  • Tell a friend

    Love Neowin? Tell a friend!