Функция glob () не работает с внешним URL

я запутался с этой проблемой
когда я работаю в местном масштабе все хорошо
с этим :

foreach (glob("public/FolderA/B/") as $filename) {

но когда я положу

foreach (glob("http://www.exemple.com/public/FolderA/B/") as $filename) {

не работает какое-либо решение ???

история : в прошлом я работаю с glob () и общаюсь с локальный сервер и сценарий делает эту работу идеально теперь Донн перечислитьт на другой сервер и проблема, которую я получаю, это как поставить глоб () работает с внешним URL не локально или какая-то функция имеет такую ​​же функциональность

0

Решение

Glob () по определению находит пути, соответствующие шаблону.
Это означает, что функция не будет работать с удаленными файлами, поскольку директория / файлы, которые нужно проверить, должны быть доступны через файловую систему сервера.

Вам, вероятно, понадобится доступ к удаленной файловой системе через FTP сервер.

Вот как это может выглядеть:

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
get contents of the current directory
$contents = ftp_nlist($conn_id, ".");  // "." means the current directory
var_dump($contents);

В качестве альтернативы, если ранее к локальному серверу все еще можно было получить доступ, на этом сервере можно было бы выполнить сценарий для сканирования каталога, как и раньше, и вывода списка файлов (например, в формате XML или JSON). Этот сценарий может быть отправлен запрос (сейчас) удаленный сценарий, давая список файлов таким образом.

Обновление: доступ по FTP, полный скрипт

<?php

$ftp_server   = 'ftp.example.org';
$ftp_port     = 21;
$ftp_timeout  = 90;
$ftp_user     = 'my_username';
$ftp_password = 'my_password';

// set up a connection or die
$conn_id = ftp_connect($ftp_server, $ftp_port, $ftp_timeout);
if ($conn_id===false) {
echo 'Failed to connect to the server<br />';
exit(1);
}

// Log in or die
$logged_in = ftp_login($conn_id, $ftp_user, $ftp_password);
if ($logged_in!==true) {
echo 'Failed to log-in<br />';
exit(1);
}

// Change directory if necessary
echo "Current directory: " . ftp_pwd($conn_id) . '<br />';

// Set to passive mode if required
ftp_pasv ($conn_id, true);

// Change directory if necessary
if (ftp_chdir($conn_id, 'subdir1/subdir2')) {
echo "Current directory is now: " . ftp_pwd($conn_id) . '<br />';
} else {
echo 'Could not change directory<br />';
exit(1);
}

// Get list of files in this directory
$files = ftp_nlist($conn_id, ".");
if ($files===false) {
echo 'Failed to get listing<br />';
exit(1);
}

foreach($files as $n=>$file) {
echo "$n: $file<br />";
$local_dir = '/my_local_dir/';
foreach($files as $n => $file) {
// These we don't want to download
if (($file=='.') || ($file=='..') || ($file[0]=='.')) continue;
// These we do want to download
echo "$n: $file<br />";
if (ftp_get($conn_id, $local_dir.$file, $file, FTP_BINARY)) {
echo "Successfully written to $local_dir$file<br />";
} else {
echo "Could not get $local_dir.$file<br />";
}
}
// Do whatever has to been done with $file
}

?>
1

Другие решения

Если ваш PHP-скрипт работает под Windows, вы можете использовать

glob("\\\\remoteServer\\public\\FolderA\\B\\*.*")

потому что, как сказал Херхер, «каталог / файлы, которые нужно проверить, должны быть доступны через файловую систему сервера». и Windows разрешает доступ к другим компьютерам, используя путь UNC. Поскольку Windows использует обратную косую черту вместо прямой косой черты, а в PHP обратная косая черта является escape-символом, каждой обратной косой черте должен предшествовать обратный слеш. В проводнике Windows (он же File Explorer) вышеуказанный UNC-путь будет

\\remoteServer\public\FolderA\B\*.*
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector