A friend come client of mine had a problem today – he was getting errors with his website, but had done nothing to the site. Errors a bit like this:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/user/public_html/page.php on line xx
Warning: include(http://www.somedomain.com/file.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/user/public_html/page.php on line xx
Warning: include() [function.include]: Failed opening ‘http://www.somedomain.com/file.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/user/public_html/page.php on line xx
I figured it must have been something the hosting company did… it turned out to be right – they had upgraded from PHP4 to PHP5 – which doesn’t allow remote file includes (in order to prevent cross site scripting). On further investigation (involving me having to remember the username/password combination!) I discovered that the site (which I didn’t build) wasn’t actually pulling in remote headers, but was using a full url string like:
< ?php include("http://www.somedomain.com/includes/head.php"); ?>
So after a quick hunt around (my PHP isn’t great), I found this blog post which reminded me of the answer I already knew but lacked the confidence to believe. I changed line to say:
< ?php include("includes/head.php"); ?>
And that worked. All I needed to do was download the rest of the PHP files and ran a multiple file search and replace on all the php files – backup the old site and reupload the amended code.
All working again. I just thought I would share that.