繁体   English   中英

ncat命令在命令行上有效,但不适用于php脚本

[英]ncat command works on command line but not on php script

我有以下命令:

echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80

在命令行中可以正常工作。 但是,它在php脚本中不起作用:

<?php

$html = system("echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");

print $html;

?>

而不是返回正确的html,而是返回“您的浏览器发送了服务器无法理解的请求”错误。 我该如何解决?

您正在编写PHP,因此字符串中的\\n被PHP解析为实际的换行符:

$html = system("echo -e 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");
                                       ^^^^^

最终发送到system()启动的外壳的内容如下:

echo -e 'GET / HTTP/1.0

'| ncat www.website.com 80

尝试

$html = system("echo -e 'GET / HTTP/1.0\\n\\n' | ncat www.website.com 80");
                                       ^--^---note these

代替。

它看起来应该像这样:

<?php

$html = system("echo 'GET / HTTP/1.0\n\n' | ncat www.website.com 80");

print $html;

?>

我必须从echo命令中删除-e。 我检查了Wireshark上的数据包,发送的内容是这样的:

-e GET / HTTP/1.0

去搞清楚...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM