Некоторые FTP-команды на PHP работают с локального хоста, но не работают с сайта клиента.

Я создал модуль для проекта моего клиента, который должен отправлять файл через FTPS на веб-сервис. Веб-сервис разрешает подключение только с некоторых IP-адресов.

На моем локальном хосте работает, но некоторые FTP-команды не работают на живом сайте клиента.

Например, в основном я подключаюсь с помощью ftp_ssl_connect. Работает на сайте клиента.

Затем я вхожу в систему с помощью ftp_login. Он также работает на сайте клиента.

Затем я перехожу в пассивный режим с помощью ftp_pasv. Это также работает на живом сайте.

Но когда я пытаюсь получить список файлов с помощью команды ftp_nlist, она работает с моего локального хоста, но отказывается выполняться на сайте клиента.

Кроме того, когда я отправляю файл с командой ftp_put, он работает на моем локальном хосте, но отказывается работать из проекта клиента.

  $config = yrv_eboks_get_config_data();
  $conn = ftp_ssl_connect($config->ftp_host, 21, 15);
  if (ftp_login($conn, $config->ftp_login, $config->ftp_password)) {
    if (ftp_pasv($conn, true)) {
      $files = ftp_nlist($conn, ".");
      var_dump($files);
    } 
  } else {
    // "Could not login via login via FTPS"
  };

Я не знаю, где проблема и как ее решить.

Не подскажете, в чем может быть проблема и что делать?


person Yakimkin Roman    schedule 18.03.2020    source источник
comment
какие-нибудь журналы ошибок?   -  person Martin    schedule 18.03.2020
comment
где взять логи? На том веб-сервисе, который должен получать файлы?   -  person Yakimkin Roman    schedule 18.03.2020
comment
php должен иметь файл error.log, он будет в том же каталоге, что и php-файл, в котором он находится.   -  person Danimal    schedule 18.03.2020
comment
Я заметил следующее предупреждение: ftp_nlist(): php_connect_nonb() failed: Operation now in progress (115)   -  person Yakimkin Roman    schedule 18.03.2020
comment
@YakimkinRoman stackoverflow.com/questions/15688331/ это может помочь вам решить эту ошибку.   -  person S M Jobayer Alam    schedule 18.03.2020


Ответы (1)


ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

напишите это в верхней части файла и получите доступ к файлу php, ваш браузер отобразит ошибку. вы уверены, что эти функции включены на вашем хостинге? потому что общий сервер отключает множество функций для предотвращения злоупотреблений, например, источник, символическая ссылка, ftp_put и т. д. Вы можете проверить, какая функция отключена, создав php-файл, используя приведенный ниже код.

<?php
phpinfo();
?>

сохраните приведенный выше код как anyname.php, затем получите к нему доступ, и вы увидите там информацию о php. нажмите кнопку ctrl+f (поиск) и напишите disable_functions, и там вы увидите все отключенные функции или создайте файл с приведенным ниже кодом и получите доступ к нему из браузера (это может не работать, если ваш провайдер также заблокировал функцию ini_get)

<?php echo "Disabled functions: ".ini_get('disable_functions')."\n"; ?>

если ваша функция отключена, вы можете включить их, создав файл php.ini в своем каталоге или попросив вашего хостинг-провайдера включить их.

чтобы включить функцию: создайте php.ini со следующим кодом

disable_functions = ""

однако это может не работать, если ваша среда хостинга использует php.ini по умолчанию с приоритетом, поэтому лучше связаться с провайдером и попросить их включить.

person S M Jobayer Alam    schedule 18.03.2020