如何从不同的PHP文件访问FTP连接?
我正在尝试用PHP创建FTP连接,并尝试从其他PHP文件访问它。基本上,我的目标是创建一个FTP连接,使其在登录时像会话一样可用,然后从我的其他PHP文件访问它,以执行其他任务,如文件上载和下载 我的连接类如下:如何从不同的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
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?