Некоторые команды FTP на PHP работают с localhost, но не работают с клиентского сайта - PullRequest
0 голосов
/ 18 марта 2020

Я создал модуль для проекта моего клиента, который должен отправлять файл через 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"
  };

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

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

1 Ответ

1 голос
/ 18 марта 2020
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

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

<?php
phpinfo();
?>

, сохраните указанный выше код под любым именем. 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 с приоритетом, поэтому лучше связаться с провайдером и попросить его включить.

...