Intereting Posts
PHP: Я смешиваю программирование, управляемое событиями, с сигнальными интерфейсами (сигналом и слотом / шаблоном наблюдателя)? максимальная длина сеанса php и файлов cookie PHP 5.2 Функция, необходимая для сортировки массива записей GENERIC Поле первичного ключа не получает подтверждения для уникальности в cakephp php preg_split не распознает пробелы Компиляция PHP с поддержкой GD и libjpeg Блокирование спама комментариев без использования captcha Как переопределить Symfony форму ввода MoneyType как type = "number"? Laravel – BindingResolutionExceptionUnresolvable урегулирование зависимостей ] в классе GuzzleHttp \ Psr7 \ Request Ошибка session_start () MAMP: php.ini – mbstring.http_input – Отключение для Drupal Генерировать массив случайных уникальных чисел в PHP Как включить сжатие GZip на сервере XAMPP Добавление пользовательского сегмента URL на страницу wordpress Отображение кода PHP в браузере вместо его выполнения

Доступ ко всем содержимым каталога псевдонимов в PHP

Я создал каталог псевдонимов, настроив 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 / прощай), и получайте удовольствие от парсинга …