2014-01-28 2 views
0

Я пытаюсь создать FTP-соединение в PHP и пытаюсь получить к нему доступ из других файлов PHP. В основном моя цель - создать FTP-соединение и сделать его доступным как сеанс при входе в систему, а затем получить доступ к нему из других файлов PHP для выполнения других задач, таких как загрузка файлов.Как получить доступ к FTP-соединению из разных файлов PHP?

Мой класс соединение следующим образом,

<?php 

    if($_GET['q'] == 'ftp_connect') 
    { 
     $connection = new connect_to_ftp; 
     echo $connection->ftp_connection(); 

    } 
    elseif($_GET['q'] == 'get_connection_id') 
    { 
     $connection = new connect_to_ftp; 
     echo $connection->get_connection(); 
    } 


class connect_to_ftp 
{ 
    public $ftp_server = ""; 
    public $username = ""; 
    public $password = ""; 
    public $connectionID, $login_result, $response; 

    public function ftp_connection() 
    { 
     $this->connectionID = ftp_connect($this->ftp_server); 

     if($this->connectionID==true) 
     { 
      $this->response = array("connection_error" => "Connected to ".$this->ftp_server); 
      $this->login_result = ftp_login($this->connectionID, $this->username, $this->password); 

      if($this->login_result==true) 
      { 
       $this->response = array("connection_error" => "Login successful to ".$this->ftp_server); 
      }else 
      { 
       $this->response = array("connection_error" => "Failed to login to ".$this->ftp_server." Check username and password"); 
      } 

     }else 
     { 
      $this->response = array("connection_error" => "Could not connect to ".$this->ftp_server); 
     } 

     return json_encode($this->response); 
    } 

    public function get_connection() 
    { 
     return $this->connectionID; 
    } 
} 

?> 

Когда я называю ftp_connection() с помощью Ajax, он успешно подключается к FTP счета, но позже, когда я звоню get_connection() вернуть мне идентификатор соединения, он возвращает меня нулевой вместо.

+0

Попробуйте ввести код в свой вопрос, чтобы лучше объяснить, что вы пробовали. Это может помочь другим понять, где может быть ваша конкретная проблема. – veducm

+0

Я добавил код, не могли бы вы проверить и сообщить мне, почему он возвращает мне null при попытке получить идентификатор соединения? – Shakil

ответ

0

Короткий ответ: Вы не можете

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

Варианты либо

1) создать соединение, выполнить необходимые операции, а затем закрыть его в экземпляр сценария РНР. К сожалению, FTP еще более плохо продуман, чем SMTP, но почти так же глубоко укоренился. Поэтому многие люди изобрели встроенные функции безопасности, чтобы попытаться устранить его недостатки. Общим является ограничение скорости соединений.

2) запустить демон на основе событий, чтобы действовать как клиент FTP и подключиться к нему с помощью php. Однако, если вы не понимаете файлы и процессы, вам нужно много учиться, прежде чем писать такое программирование.

Я упоминал, что FTP отстой? Узнайте, как использовать SFTP.

Смежные вопросы