使用PHP脚本检查FTP状态代码
时间:2020-03-05 18:39:09 来源:igfitidea点击:
我有一个脚本,该脚本使用PEAR HTTP类检查来自HTTP服务器的响应。但是,我最近发现该脚本在FTP服务器(以及可能不是HTTP或者HTTPS的任何服务器)上失败。我尝试使用Google,但没有看到任何脚本或者代码从HTTP服务器以外的其他服务器返回服务器状态代码。
如何使用PHP找出新闻组或者FTP服务器的状态?
编辑:我应该澄清一下,我只对从FTP服务器和我指定的目录读取的能力感兴趣。我需要知道服务器是否已死/无用,我无权读取等。
请注意,尽管大多数时候我都不了解语言,但是整个网站都是由PHP驱动的,因此,PHP解决方案将是将来易于维护和扩展的最佳解决方案。
解决方案
回答
使用内置的PHP FTP *功能是否比尝试自己滚动更简单?如果URI来自我们控制之外的源,则需要检查协议定义(http://或者ftp://等),以确定要使用的功能,但这相当琐碎。如果现在指定了协议(确实应该有!),那么我们可以尝试默认使用http。
- 看这里
回答
不幸的是,HTTP的工作原理与FTP略有不同。尽管两者在浏览器中看起来可能相同,但是HTTP可以在URI的基础上工作(即,访问资源A时,我们会有一个标识符,告诉我们如何访问该资源)。
FTP是非常老派的服务器驱动的。甚至匿名FTP也是一个小问题,因为我们仍然提供用户名和密码,所以它仅被定义为"匿名"和电子邮件地址。
检查FTP服务器是否启动意味着检查
- 我们可以连接到FTP服务器
if(!($ ftpfd = ftp_connect($ hostname))){...}
- 我们可以登录到服务器:
if(!ftp_login($ ftpfd,$ username,$ password)){...}
- 然后,如果我们需要访问其他基础资源以测试特定站点是否正常运行,请对它们进行适当的操作。例如在文件上,可以使用ftp_mdtm()获取上次修改时间,或者在目录上,查看ftp_nlist()是否有效。
回答
如果要读取特定的响应,则必须打开一个套接字并手动读取/写入数据。
<?php $sock = fsockopen($hostname, $port); ?>
然后,我们将不得不来回读取/读取数据。
这将要求我们阅读FTP协议。