【发布时间】:2018-07-27 19:11:10
【问题描述】:
我需要从 .gz 文件中提取数据,该文件位于 ftp 服务器上。 FTP服务器使用IP白名单,所以我提交了我的本地IP和我的网站IP(我使用gethostbyname获取IP),这两个都被批准了。
在本地,我可以运行此代码来访问文件:
$url="ftp://username:password@host/targetfile.gz";
$xml = simplexml_load_file("compress.zlib://$url") or die ("Cannot load file");
这运行得很好,它允许我从 XML 文件中提取数据。
但是,当我在我的服务器上运行脚本时,我没有获得连接。我联系了运行 ftp 服务器的管理员,他们告诉我他们只允许 FTPS 连接。
所以,我继续使用以下代码尝试建立连接:
$conn_id = ftp_ssl_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if (!$login_result) {
die("Cannot login.");
}
echo ftp_pwd($conn_id); // /
// close the ssl connection
ftp_close($conn_id);
这也没有连接。一般来说,我是使用 PHP 和 FTP 进行 FTP 连接的新手,我不知道如何从这一点开始。
OpenSSL 已启用。
谁能指出我正确的方向?
编辑:这些是错误消息:
当我使用最上面的代码块时,会发生这种情况:
警告:simplexml_load_file():I/O 警告:无法加载外部 实体 "compress.zlib://username:password@ftp.thehost.com/targetfile.gz";在 /path/to/my/website/folder/htdocs/mydomain.com/feeds/script.php 上 第 13 行
当我使用底部的代码块时,我得到了这个错误:
警告:ftp_login() 期望参数 1 是资源,给定的布尔值 在 /path/to/my/website/folder/htdocs/mydomain.com/feeds/script.php 上 第 16 行无法登录。
我无权访问日志文件 afaik
【问题讨论】:
-
"not getting a connection" 和 "doesn't connect" 都非常模糊。你得到什么确切的错误信息? + 你有对服务器的 shell 访问权限吗?您可以使用独立的 FTP 客户端从 Web 服务器连接到 FTP 服务器吗?
-
我没有 shell 访问权限,是的,我可以使用 FileZilla 登录到 ftp 服务器。请注意,当我通过 localhost / xampp 服务器运行脚本时,我也能够登录。除了来自 die("Cannot login.") 的错误消息外,我没有收到任何错误消息。尽我所能描述它:我根本无法登录。 ftp 服务器实际上并没有返回任何错误消息,所以我对此一无所知。
-
您是否捕获 PHP 警告?您可以访问 FTP 服务器日志文件吗?
-
当我使用顶部代码块时,会发生这种情况:警告:simplexml_load_file():I/O 警告:无法在 /path 中加载外部实体“compress.zlib://username:password@ftp.thehost.com/targetfile.gz” /to/my/website/folder/htdocs/mydomain.com/feeds/script.php 在第 13 行当我使用底部代码块时,我收到此错误:警告:ftp_login() 期望参数 1 是资源,布尔值在第 16 行的 /path/to/my/website/folder/htdocs/mydomain.com/feeds/script.php 中给出 无法登录。我无权访问日志文件 afaik。
-
将此信息编辑到您的问题中。 + 所以我假设
ftp_ssl_connect返回false,对吧?