JohnDahl Posted August 28, 2018 Share Posted August 28, 2018 I am organizing the folder structure of the site in what I thought was a sensible manner, but I am running into some major folder path headaches. There must be some sort of path variables/environment vars that can be set somewhere to alleviate this. As an example, I put all of the common stuff here (header, footer, css, images, etc): example.com/common If a file inside of the example.com folder calls header.php, it is simple: <?php include "common/header.php"; ?> If it is two levels deeper, using relative paths (yuck - please help) it is as follows: <?php include "../../common/header.php"; ?> I won't belabor the point, but this gets messy, and I am running into "path not found" issues with nested content. I don't want to hard-code the absolute path (all the way back to root level) for one simple reason, the development is on my desktop (Ubuntu linux w/ apache 2.4) and the paths are different from the web server. How do I set a global path variable in apache? Link to comment Share on other sites More sharing options...
justsomeguy Posted August 28, 2018 Share Posted August 28, 2018 You can use .htaccess to set environment variables, and then use getenv. http://php.net/manual/en/function.getenv.php Link to comment Share on other sites More sharing options...
JohnDahl Posted August 28, 2018 Author Share Posted August 28, 2018 2 hours ago, justsomeguy said: You can use .htaccess to set environment variables, and then use getenv. http://php.net/manual/en/function.getenv.php thank you, that really helped (and, as usual, nothing is as easy as it sounds). Right now I am working locally, so there is no .htaccess file, but I can set up the local variables on this desktop so my files will work on the server. In case this helps others... I recommend configuring separate variables for php directory links and for html source links (otherwise you will have problems). For Ubuntu Linux, edit /etc/apache/envvars file (for Windows users I cannot help except to recommend switching to Linux, but SOME of this still pertains regardless) 1) add YOUR paths in envvars (or link to a file that contains them): export wwwROOT=/home/user/yada.../www export srcROOT=http://localhost:8080 2) restart apache: sudo service apache2 restart 3) in your php file read in these variables near the top of the file: <?php $wwwROOT = getenv('wwwROOT'); $srcROOT = getenv('srcROOT')."/example.com"; ?> 4) use the variables in php file references: <?php include $wwwROOT."/example.com/yourfilepath/yourfilename.php"; ?> 5) in html references: <a href=<?php echo $srcROOT ?> >example.com's home page...</a> <img src=<?php echo $srcROOT."/common/myimage.png" ?> > 6) On the actual server, add the wwwROOT and srcROOT variables to the .htaccess file. The wwwROOT value will be different, but the srcROOT value should be the same*. *I have not done step 6 yet, so if this is not correct somebody please clarify Link to comment Share on other sites More sharing options...
justsomeguy Posted August 28, 2018 Share Posted August 28, 2018 If you're using Apache then you should be able to just create a .htaccess file and add it to your site root. Link to comment Share on other sites More sharing options...
Funce Posted August 29, 2018 Share Posted August 29, 2018 (edited) Alternatively, you can access the server variable <?php require $_SERVER['DOCUMENT_ROOT'] . "/folder_above_root/file.php"; ?> Its no good for creating HTML URLs but with that you can just make relative from root links by starting the URL with a '/' Edited August 29, 2018 by Funce Link to comment Share on other sites More sharing options...
JohnDahl Posted August 29, 2018 Author Share Posted August 29, 2018 @Funce Thanks, that is a great solution. I test this on the server and locally, and with that one line there is no configuration. Where were you yesterday? I was futzing around with .htaccess for hours (never got it to work locally, and it can be frustrating playing 20 questions). I would give you a like, but I this w3schools.invisionzone site does not work very well (can't get any of the icons to function - firefox popup: "Sorry, there was a problem reacting to this content.") 1 Link to comment Share on other sites More sharing options...
Funce Posted August 30, 2018 Share Posted August 30, 2018 Thanks, John. I tend to only come here at the end of my workday when I've reached my wit's end with my own programs. Because of my TimeZone, sometimes it gets a little interesting, timewise. I wish I could've saved you the trouble, but I'm glad its solved now. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now