Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Glob not giving me any results

Tags:

php

I'm trying to use PHP's Glob to get a list of files based on a wildcard, namely the extension.

$images = glob('/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

I know there is a file in this directory, namely: 23.png but it doesn't show in array $images. I don't have a clue why not. I've tried making the URL even more absolute (or explicit) like:

$images = glob('http://www.website.com/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

Without result.

Could it be that Glob isn't installed properly inside PHP? Or is there another reason this doesn't give any results?

like image 849
tvgemert Avatar asked Aug 09 '11 14:08

tvgemert


2 Answers

glob only works with paths on the server's file system, not URLs.

http://www.website.com/content/big/ may really be /var/www/site/content/big on the server, and that's the path you need to use.

Staring a path with a / makes glob look in your root for that folder, and I'm assuming there is no folder called /content/big/ on your server.

Try it like this (using a relative path from the server root):

$images = glob('content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);

Or use an absolute path:

$images = glob('/var/www/site/content/big/'.$item['id'].'.{jpg,jpeg,png,gif}', GLOB_BRACE);
like image 143
Rocket Hazmat Avatar answered Oct 17 '22 16:10

Rocket Hazmat


below is my implementation, single quotes did not work with the echo, but this works for me. Hope it helps!

            <ul>
                    <?php
                            foreach(glob('audio/*.mp3') as $audio){ echo "<li><a>$audio</a></li>";}
                    ?>
            </ul>
like image 32
hinekyle Avatar answered Oct 17 '22 18:10

hinekyle