ftp_rawlist / ftp_nlist вызывает ошибку 500 случайным образом - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы сканировать мой FTP-сервер с помощью ftp_rawlist с моего веб-сервера.

Это работает, но не всегда.

Мой FTP-сервер размещен на сервере windows 2016 с использованием IIS. Это простая учетная запись FTP (без FTPS и без сертификата).

Мой PHP сервер работает PHP V7.2.30, размещенный на 1 и 1. предел памяти установлен на 128 МБ.

код следующий (я использую AJAX для запроса страницы (метод POST):

display. php

$ftp_server = "xxx.xxx.xxx.xxx";
$ftp_username = "xxxxxxxxxxx";
$ftp_userpass = "xxxxxxxxxxxxxx";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to the FTP server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

$scan = ftp_get_filelist($ftp_conn, '.');
var_dump($scan);

функция. php

function ftp_get_filelist($ftp_conn, $path){
 $Win=false;
 $contents = ftp_rawlist ($ftp_conn, $path);
 $Output = array();
 $i = 0;

 foreach ($contents as $Current) {
  $Split = preg_split('[ ]', $Current, 9, PREG_SPLIT_NO_EMPTY);
  if ($Split[0] != 'total') {
   $Output[$i]['isdir']     = ($Split[0] {0} === 'd');
   $Output[$i]['perms']     = $Split[0];
   $Output[$i]['number']    = $Split[1];
   $Output[$i]['owner']     = $Split[2];
   $Output[$i]['group']     = $Split[3];
   $Output[$i]['size']      = $Split[4];
   $Output[$i]['month']     = $Split[5];
   $Output[$i]['day']       = $Split[6];
   $Output[$i]['time']   = $Split[7];
   $Output[$i]['full_date'] = '2020-'.$Split[5].'-'.$Split[6].' '.$Split[7];
   $Output[$i]['name']      = $Split[8];
   $i++;
  }
 }
 return !empty($Output) ? $Output : FALSE;

}

Кажется, все работает (но год, мне еще не удалось это получить, но это еще одна проблема).

Итак, когда я запускаю его, хорошо, у меня есть список файлов и папок. Я обновляю sh хорошо, все еще работаю, я снова обновляю sh, затем это похоже на загрузку, а затем сервер PHP отправляет ошибку:

Ошибка 500 - Внутренняя ошибка сервера

Ошибки, которые случаются 2 или 5 раз, мне очень сложно отлаживать.

Я попытался заглянуть в файл журнала и обнаружил запросы с кодом ошибки 500, но без дополнительной информации:

xxx.xxx.xxx.xxx - - [08/May/2020:06:05:50 +0200] "POST display.php HTTP/1.1" 500 669 www.xxxxxx.com "https://xxxxxx.com/display.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-"

Если у кого-то есть идеи, это будет признательно.

Спасибо

1 Ответ

0 голосов
/ 09 мая 2020

Итак, я рад сообщить вам, что нашел, как решить эту проблему. Но, честно говоря, я не понимаю сути проблемы ...

Решение исходит из этого потока: PHP FTP ftp_nlist не работает, возвращает логическое значение false

только что добавлено после ftp_login ():

ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false); // set ftp option
ftp_pasv($ftp_conn, true); //make connection to passive mode

Спасибо за ваше время @ Martin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...