My local LAMP environment is using AMPPS for apache. My project directory is structured like so:
public/
index.php
css/
js/
img/
layout/
banners/
banner1.jpg
banner2.jpg
banner3.jpg
src/
config.php
library/
templates/
header.php
footer.php
nav.php
inside header.php I have the following code:
<ul class="slideshow">
<?php
$images = glob( $GLOBALS["config"]["paths"]["images"]["layout"] . "/banners/*.jpg" );
foreach($images as $image){
$out = "<li><img alt='banner' width=1280 height=320 src='".$image."'/>ASC Online</li>";
ChromePHP::log($out);
echo $out;
}
?>
</ul>
( the global $config is set in the src/config.php
file. )
When the code is echoed out, it appears to be correct:
<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner1.jpg'/>ASC Online</li>
<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner2.jpg'/>ASC Online</li>
<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner3.jpg'/>ASC Online</li>
If I go to the URL indicated in the output above, the image files are there... The directory is correct.
However, in-browser, I am getting a 404: File Not Found when the browser tries to retrieve the files.
It is not permissions because I am able to get other files/images in the project dir.
Any ideas?
Your glob
is returning paths relative to the drive root. When accessing through the browser, it is done relative to the document root, which is most likely the public_html
folder.
You will need to do something like:
"... src='".substr($image,strlen($_SERVER['DOCUMENT_ROOT']))."' ..."