I am working on a website for a client and I am using xampp to serve and work on locally.
The site is loading fine at localhost/site but the resources are not being found. The previous developer used absolute paths in the index.php to define resources like so:
<script href="/includes/javascript.js">
The site fails to load javascript.js because it looks at:
localhost/includes/javascript.js
When it NEEDS to be:
localhost/site/includes/javascript.js
index.php is located here:
localhost/site/index.php
It works fine on the client server. What am I missing here?
A URL starting with / is always absolute, you need a relative path here. So use
<script href="includes/javascript.js">
in your index.php or all files located in localhost/site or use
<script href="/site/includes/javascript.js">
for use in all files.
You have a two mistake use src not href and remove / from start. try like that
<script type="text/javascript" src="includes/javascript.js"></script>
Related
I have download a website that was written from scratch using PHP, MySql, html, css, jQuery.
After fixing some configuration with MySql and htaccess, I get to a point where all my CSS and JS files are not loaded because of a relative path error.
This is how it looks:
The error in the console GET http://localhost/fonts/fonts.css sends me to index.php which loads all those files with a relative path.
Now, if I remove the / at the beginning of each line, the files will be loaded, however, I get more errors on different pages with bad URLs and such, that means that I need to fix this / problem instead of just renaming the hrefs.
So my question is, how to fix it?
I have tried to set a base href tag:
<base href="http://localhost/israelrescue/">
or
<base href="http://localhost/israelrescue">
or in PHP:
$_SERVER['DOCUMENT_ROOT'] = 'http://localhost/israelrescue';
or
$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/israelrescue/';
P.S:
israelrescue is the name of the folder I am using in my localhost installation for this website.
Nothing seems to work, any ideas?
Thanks!
Answers:
It's because you've got the site in a subfolder in localhost. Is it possible for you to move the site into the root? I think #MukeshPanchal is telling you to load the assets from live, which is missing the point somewhat. – thebluefox
Looks like this site was not written to be run from within a
sub-folder. Easiest way to work around that would be to set up a
VirtualHost for this project in your local server, so that you can
load it directly via a local domain name, without any additional path.
(And btw., setting DOCUMENT_ROOT to an HTTP URL is complete nonsense.)
– CBroe
You can leave the site in its subfolder as long as you drop the "/" in the beggining of every file path :
<link rel="stylesheet" href="/css/main.css">
<script type="text/javascript" src="/js/common.js"></script>
becomes
<link rel="stylesheet" href="css/main.css">
<script type="text/javascript" src="js/common.js"></script>
Should work like this
I have directory structure like this:
- index.php
- templates(directory)
- login.php
- header.php
- js(directory)
- jquery.min.js
I include script jquery.min.js in header.php, then I include header.php in login.php, but the path to jquery.min.js brokes. How I try to solve it by replace this:
<script src="js/jquery.min.js">
to this
<script src="<?php echo dirname(__FILE__)?>js/jquery.min.js">
but then I get this path to resourse:
http://localhost/var/www/auth/js/jquery.min.js
And again 404 error. Can somebody explain to me how I can solve this issue.
js's script files work in context of web-root. as long as your web-root is where your index.php is then <script src="/js/jquery.min.js"> should work
You use <script src="js/jquery.min.js"> which is a relative path. so, if you call login.php browser requests js relatively to it: templates/js/jquery.min.js which doesn't exist, obviously
What you're trying to do is find the path of the javascript file relative to the root of your application, rather than any specific php file. So, if you change the script tag to begin with a /, it'll serve from the root of your application, regardless of where the php files are.
Changing it to <script src="/js/jquery.min.js"> will serve it from http://localhost/js/jquery.min.js regardless of where in your structure your php files are.
I have created a site, running it locally using XAMPP as i developed it, and it runs perfectly when local.
However i tested it when hosted and the CSS & JQuery (Google library) do not work at all.
The CSS tags use the standard:
<link rel="stylesheet" type="text/css" href="/css/css.css">
Is there a reason this wouldnt work when live? But surely this has nothing to do with why JQuery doesnt work either?
I dont feel comfortable leaving it live when it doesnt work, so im sorry i cannot give you a live version to view.
Any help would be great!
Do check with Inspector if the CSS and JS files are loaded correctly when you go live — do note that the first slash in front of the URL means you're referencing the root URL of the live site. Are the directory structures of the local and live site different?
Also, you can try loading the external files using the absolute URL, like http://domain.tld/css/css.css (double check if the file exists, or loadable). If it works, then it's your relative URL path that is not working.
[Edit]: For the sake of completeness, this is how relative URL paths work:
/<fileName>.<fileExtension> will point to the file at the root directory
./<fileName>.<fileExtension> will point to the file in the same directory as the current page
../<fileName>.<fileExtension> will point to the file in the directory one level above, relative to the current directory
Check that you have actually uploded CSS files into /css/ folder. (Obviously /css/ folder should be present on your server)
Make sure you can access you CSS files from the web: eg if you go herehttp://yourdomain.com/css/css.ss you should see the contents of you CSS file.
if you can see the contents of your file here: http://yourdomain.com/css/css.css
then try this:
<link rel="stylesheet" type="text/css" href="http://yourdomain.com/css/css.css">
And as #Terry already mentioned check the paths.
I have a PHP enabled windows server, where i have to get a site working.
Its all well and good, the php is working, afaik. But for some reason i can not get relative paths to work in the page header.
I have this folder structure(only relevant folders):
wwwroot/Sitename/
wwwroot/Sitename/Control
wwwroot/Sitename/Images
wwwroot/Sitename/Model
wwwroot/Sitename/View
In IIS i have set the the physical path to wwwroot/Sitename/Control. This loads pages.php(which is located here) which in turn loads wwwroot/Sitename/view/header.php and footer.php.
This works perfectly, however in header.php there are some references to some javascript (and other) files located in wwwroot/Sitename/Model eg.:wwwroot/Sitename/model/js.js
(eg:
<link rel="stylesheet" type="text/css" href="../model/main.css" />
)
This file is not found by the browser when loaded. I am sure it has something to do with the fact that i have set the physical path as i have but this is needed to load pages.php.
Can anyone point me in the right direction? either why the relative path is not working or perhaps another way to set the physical path/something similar.
EDIT: clarifications in parenthesis
use ../ to go down a folder.
Try this in your header.php:
../Model
Why dont you use Absolute urls?
$SiteURL = 'http://www.your_iis_sever.com';
Then in your javascript files use
<?php echo $SiteURL;?>/path/to/js/jscript.js
infront of the links. Make sure its all correct => Check the source code when viewing the page if the paths are correct. From there its easier to navigate.
I am trying to include a .js file into a php file.
My folder structure looks like this:
root
---js (FOLDER)
------file.js
---blog (FOLDER)
------index.php
------js (FOLDER)
---------blog.js
If I am using this:
<script type="text/javascript" src="../js/blog.js"></script>
it works just fine.
What I can't seem to do is include file.js from under the root's "js" directory.
I've tried everything I can think of but I just can't seem to make it work.
<script type="text/javascript" src="/js/file.js"></script>
would reference the javascript file in the top level js directory
To access the blog, is a user going to www.domain.com or www.domain.com/blog?
If /root/blog is your DOCROOT in your web server, the /root/js directly likely isn't web-accessible. The location you're referencing MUST be accessible to the client's browser.
An easy way to test this is to enter the path to the JS file directly into your browser.
it looks like blog is in a subdirectory of the folder index.php is in. Discard the ../ bit.
<script type="text/javascript" src="js/blog.js"></script>
<script type="text/javascript" src="../js/file.js"></script>