会话中的PHP FTP连接


PHP FTP connection in a Session

我有一个PHP FTP连接的问题后,它已被放入一个会话变量

我有index.php做输入信息的一般检查,然后指向connect.php,它使连接和登录。登录后,它会指向setup.php。设置是为了下载相关文件,但是当我指向FTP方法的会话变量时,它只返回false/null。我试过连接,改变目录等没有会议,这是有效的。我也试过把会话变量放入一个变量,但这不起作用。我已经确保将FTP变量放入会话中。我做错了什么?

//setup.php
<?php
session_start();
if(!isset($_SESSION['conn_id']))
{
    header("Location: index.php");
    exit();
}
$dir = "/home/oliver/";
ftp_chdir($_SESSION['conn_id'], $dir);
var_dump(ftp_nlist($_SESSION['conn_id'], "."));
ftp_close($_SESSION['conn_id']);

谢谢

ftp_connect返回一个资源。它就像一个指向连接表的指针(索引)。该表仅在PHP脚本的生命周期内有效。因此,如果您将指针转移到另一个脚本实例,它将指向一个无效的条目。

如果您需要在脚本实例之间共享FTP连接,您可能需要实现一些守护进程(本地服务器)

不能在会话变量中存储ftp_connect。我的建议是将登录的凭据存储在$_SESSION变量中,然后在单独的页面上使用您存储的凭据来创建您可以用来做您需要做的事情的ftp_connect。如果你需要有当前目录,那么你必须在每个请求中发送它

ftp_connect函数返回resource类型的数据,如官方文档中所示:

警告由于会话数据是序列化的,所以资源变量不能存储在会话中。

显然你不能这样做,一个解决方案是将连接保存到一个文件中,而不是会话存储