我正在尝试创建一个人们可以运行moss的网页,并检查源代码文件中的相似之处。
为此,我通过php上传文件并使用php中的'exec'将这些文件作为参数调用moss script,并将输出转储到单独的文本文件中。代码工作正常,但有时它只是在上传文件后停止。
以下是剧本的片段
$server = 'moss.stanford.edu';
$port = '7690';
.
.
$sock = new IO::Socket::INET (
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
);
die "Could not connect to server $server: $!\n" unless $sock;
$sock->autoflush(1);
.
.
它无法创建连接,并且不会超出此代码段中的第四行 - “ die”无法连接到服务器$ server:$!\ n“除非$ sock; “
这种情况并不是一直发生,但有时它会很好地工作,有时则不然
但是当我登录我的webhost(这是btw godaddy)时,通过ssh并使用相同的参数在终端中执行脚本,它始终有效!
有人可以帮我解决这个问题,服务器上有什么问题,有时脚本会在浏览器执行时死掉吗?
答案 0 :(得分:2)
由于它在另一台机器上运行正常,问题可能在于您的网络或Perl安装的细节,或者与浏览器/ PHP交互有关。最容易检查的是它是否是您的网络。
看看你是否可以用Perl之外的东西重现网络问题。也许telnet moss.stanford.edu 7690
多次。这将确定问题是否为Perl,或者您的网络连接是否只是片状。
我还要保持ping moss.standford.edu
运行并尝试在浏览器中重现该问题。如果你在遇到问题的同时ping掉了,你就去了,这是一个网络问题。
答案 1 :(得分:0)
在研究此错误的DAYS之后......并确认我的代码和服务器设置都非常完美,“连接被拒绝”错误的原因是由于共享服务器问题而非阻塞端口。强>
含义...... Hosgator和GoDaddy等托管公司阻止了很多端口!由于安全问题,这是可以理解的。您不能简单地选择要使用的远程服务器上的端口。
测试服务器/客户端/端口/脚本的方法是使用更常用的端口打开远程服务器的端口。 (即:8080,80等)由于打开这些端口存在安全风险,只要测试脚本,然后再将其关闭,就保持端口打开。
如果您的脚本处理正确,那么您需要找到共享托管公司未阻止的端口。
*还有一个提示:共享托管公司也可能有代理。这可能会增加更多“阻塞/连接”问题。
我希望这可以减轻其他人花费无数时间来解决这个问题。