Я создал каталог псевдонимов, настроив httpd.conf (основной файл конфигурации Apache) следующим образом:
Alias /farewell/ "D:/farewell/2/" <Directory "D:/farewell/2"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
Я хочу получить доступ ко всем файлам изображений, находящимся внутри каталога « D: / farewell / 2 / ». Для этого glob () в PHP рекомендуется следующим образом:
<?php $path="farewell/*.*"; $images=glob($path); foreach($images as $image) echo "<img src='$image' width='300'/>"; ?>
Но цикл foreach не следует, поскольку $ images действует как пустой массив. Почему это так? Вышеупомянутый код хорошо работает при доступе к физической папке, присутствующей в папке htdocs сервера.
Например,
<?php $path="images/*.*"; $images=glob($path); foreach($images as $image) echo "<img src='$image' width='300'/>"; ?>
Это очень хорошо работает, поскольку изображения представляют собой папку, находящуюся внутри папки htdocs .
Итак, какова процедура доступа к каталогу псевдонимов?
Ваш php-скрипт не имеет доступа к каталогу через http, а через локальную файловую систему. Но браузер получит доступ к ресурсам (-ам) через http.
$path="farewell/*.*";
Это относительный путь (и маска). Если ваш скрипт не находится в "D:/
путь не будет работать.
<?php $baseuri = '/farewell/'; $baselocal='D:/farewell/2/'; foreach(glob($baselocal.'*') as $path) { $fname = basename($path); echo '<img src="', $baseuri, $fname,'" width="300"/>'; }
Сценарий «сканирует» D: / farewell / 2 /, но помещает элементы img с атрибутами src, такими как /farewell/image1.jpg
в html-документ. Поэтому браузер запрашивает их с тем же протоколом (http / https) с одного и того же хоста (localhost?), Например, http://localhost/farewell/image1.jpg
. Ваш апач – из-за псевдонима – будет служить D:/farewell/2/image1.jpg
в качестве результата для этого запроса.
Вы смешиваете две совершенно разные вещи: конфигурацию Apache и php. Просто помните, что php может работать без Apache или без какого-либо веб-сервера вообще.
Alias-директива «отображает URL-адреса в расположение файловой системы» ( doc ) и php glob () «находит пути, соответствующие шаблону». Таким образом, вы не можете указывать URL-адрес glob.
Чтобы получить доступ к каталогу псевдонимов из php, используйте glob с glob пути glob("D:/farewell/2/*.*")
но ваш php должен иметь права доступа к нему или вызвать get_file_contents (www.example.com / прощай), и получайте удовольствие от парсинга …