如何从不同的PHP文件访问FTP连接?

如何从不同的PHP文件访问FTP连接?,php,ftp,Php,Ftp,我正在尝试用PHP创建FTP连接,并尝试从其他PHP文件访问它。基本上,我的目标是创建一个FTP连接,使其在登录时像会话一样可用,然后从我的其他PHP文件访问它,以执行其他任务,如文件上载和下载 我的连接类如下: <?php if($_GET['q'] == 'ftp_connect') { $connection = new connect_to_ftp; echo $connection->ftp_connection();

我正在尝试用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;
    }
}

?>


当我使用ajax调用
ftp\u connection()
时,它成功地连接到ftp帐户,但稍后当我调用
get\u connection()
返回连接id时,它将返回null。

简短回答:你不能

更详细的回答:文件句柄(包括套接字)只存在于打开它们的进程中(严格来说,这不是事实,Linux上可以在进程之间传递文件句柄,但这是一个非常有争议的功能,与大多数深奥的东西一样,除非您完全理解其后果,并且该功能没有在php中公开),否则不应使用它)

两种选择都可以

1) 创建一个连接,执行必要的操作,然后在php脚本实例中关闭它。不幸的是,FTP甚至比SMTP思想更糟糕,但几乎同样根深蒂固。所以很多人发明了内置的安全“功能”,试图解决它的缺点。一个常见的问题是连接的速率限制

2) 运行一个基于事件的守护程序作为FTP客户端,并使用php连接到该客户端。但是,如果您不了解文件和流程,那么在编写这样的编程之前,您需要进行大量的学习


我说过FTP很烂吗?了解如何使用SFTP。

尝试在问题中包含一些代码,以便更好地解释您所尝试的内容。这可以帮助其他人了解您的确切问题所在。我已经添加了代码,请检查并告诉我为什么在尝试获取连接Id时返回null?