Skip to main content

PHP : Set document root to be a subdirectory without .htaccess or Virtualhost

PHP : Set document root to be a subdirectory without .htaccess or Virtualhost
Recently I faced a problem with hosting a website on a server to which I have limited access. I was provided with permission only to a sub-directory on the server.
I'm habituated to use relative paths, but my root points to the root of server and not my sub-directory. This forced me to use absolute paths at every point.
I searched for the solution and end up with two results:
.htaccess ot Virtualhost
I never tried to understand .htaccess and I don't have access to set Virtualhost. This forced me to try bit harder and here is the outcome.

I've created a file named rootpath.php on root directory of my website.
(Note: this is not root '/' of the web server, but my sub-directory)
Its contents are as follows:
<?php
    $relative_path = "/subdirectory";
    $server_url = $_SERVER["SERVER_NAME"];

    $root = "http://" . $server_url. $relative_path;
?>
Now, I include this file on top of every file.
Eg: <?php require('rootpath.php'); ?>
and append all paths with <?php print $root; ?>
Eg: <a href="<?php print $root; ?>/index.php">
Note: Initially I used './' and '../' notation, but it won't work always. Consider the following case, which I faced:
/index.php
/header.php
/footer.php
/scripts.php
/contact
--contact/contact.php
I defined a common header for all the pages and stored it in header.php, which in-turn imports all the necessary scripts from scripts.php.
Now, if you import header.php from contact/contact.php, it work work properly because scripts.php is loaded relatively in header.php and now the control searches it in contact directory.

Comments

Post a Comment

Popular posts from this blog

Karabiner: Mouse/keyboard customizer for OS X

For beginners, or the one who migrated from Windows environment, Natural Gestures (Scrolling and Swiping) might be bit confusing. But, once you get familiarized with them, it may feel like "What was I doing, all those days?". It all changed, when I connected external mouse to my Macbook. When you start using that WHEEL, you will be confused. Luckily there is a setting for mouse, to change scroll behavior (natural or the other way). But, here's the catch. If you toggle that setting, it also toggles the same for TRACKPAD!!!!! I've seen that many people were freaked out and even raised BUG report to Apple. But, all those reports were closed, saying that is not a bug, but intentional feature!!! For those, who can't leave with such one-sided settings, here is a simple util, which came to my rescue: Karabiner It's simple, powerful and stable mouse/keyboard customizer for OSX. Without going into much detail, here's the configuration I used to ret...

Nexus 5 : IMEI 0 issue

Sometime back, an update (believe me, an OTA update) blocked all network calls on my mobile. After struggling for a while, I came to know that IMEI of my phone was set to 0. Tried many solutions (resetting the phone, clearing cache, even installing fresh OS), but none came to my rescue. Thanks to a guy (sorry for not crediting), who uploaded instructions in Russian language, and with the help of Google Translate, my phone is up and running again. Note: Before proceeding any further, keep in mind that you need IMEI of your phone (check on back panel) Download related files from here . Here is the procedure that I've followed: Install the LG driver LG Install QPST Copy the entire folder EFS Professional to C drive Unpack the archive Nexus5 the root of drive C. Using WUG Nexus toolkit: Make sure running stock Android 5.0.1 Rooted If necessary, you can reset the IMEI using backups zero IMEI from the archive. To do this, simply make a backup of your EFS in TWRP, t...

Reverse Engineering : Extract contents from .img file

Unyaffs is a program to extract files from a YAFFS2 file system image. Currently it can only extract images created by mkyaffs2image. Download the source from here . Compiling : Extract the contents into a suitable place and run the following command make Usage : unyaffs [options] <image_file_name> [<extract_directory>] Options: -d detection of flash layout, no extraction -b spare contains bad block information -c <chunk size> set chunk size in KByte (default: autodetect, max: 16) -s <spare size> set spare size in Byte (default: autodetect, max: 512) -t list image contents -v verbose output -V print version Source: Official github repository