使用PHP脚本检查FTP状态代码

时间:2008-08-12 12:07:16

标签: php http ftp pear server-response

我有一个脚本,使用PEAR HTTP类检查来自HTTP服务器的响应。但是,我最近发现脚本在FTP服务器上失败(可能是任何非HTTP或HTTPS的脚本)。我尝试了Google,但没有看到任何脚本或代码从HTTP服务器以外的服务器返回服务器状态代码。

如何使用PHP查找新闻组或FTP服务器的状态?

编辑:我应该澄清一下,我只对从FTP服务器和我指定的目录中读取的能力感兴趣。我需要知道服务器是否已经死亡,我无权阅读,等等。

请注意,尽管大部分时间我都是语言不可知的,但整个网站都是由PHP驱动的,因此PHP解决方案将是最易于维护和扩展的解决方案。

3 个答案:

答案 0 :(得分:3)

不过,

HTTP的工作方式与FTP略有不同。尽管两者在浏览器中看起来都相同,但HTTP依赖于URI(即访问资源A,您有一个标识符,告诉您如何访问它)。

FTP是一个很老的学校服务器驱动。即使是匿名FTP也是一个黑客,因为你仍然提供用户名和密码,它只是被定义为“匿名”和你的电子邮件地址。

检查FTP服务器是否启动意味着检查

  1. 您可以连接到FTP服务器

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. 您可以登录服务器:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. 然后,如果您需要访问其他基础资源以测试特定网站是否已启动,则对它们使用适当的操作。例如在文件上,可以使用ftp_mdtm()获取上次修改时间或在目录上查看ftp_nlist()是否有效。

答案 1 :(得分:0)

使用内置的PHP FTP *功能比尝试自己推送更简单吗?如果URI来自控件之外的源,则需要检查协议定义(http://或ftp://等)以确定要使用的功能,但这非常简单。如果现在指定了protocal(确实应该!)那么你可以尝试默认为http。

答案 2 :(得分:0)

如果您想阅读特定的回复,您必须手动打开套接字并读/写数据。

<?php
$sock = fsockopen($hostname, $port);
?>

然后你必须来回传输数据 这将要求您阅读FTP协议。