当脚本在Apache下运行时,我将$_SERVER['SERVER_NAME']值插入到报告电子邮件的错误中.
但是,如果一个Web脚本叉一个"工人"的工作有nohup php ...,$_SERVER['SERVER_NAME']显示为空在那里.因此,如果发生错误,则报告没有主机名.
我可以通过PHP可靠地获取主机名,而无需调用Unix hostname命令吗?
我正在尝试将主机名解析为其对应的IP.
我的环境是代理服务器后面的公司网络中的mac,它通过系统首选项(自动代理配置)配置.pac文件.到目前为止一切正常,我可以访问公司网络内外的资源.
解析我网络中的主机非常正常:
InetAddress.getByName("host.local");
但是当我使用外部主机名时,我得到一个UnknownHostException:
InetAddress.getByName("google.com");
产生
Exception in thread "main" java.net.UnknownHostException: google.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at java.net.InetAddress.getByName(InetAddress.java:970)
at Test.main(Test.java:67)
Run Code Online (Sandbox Code Playgroud)
(我在Inet6AddressImpl这里有点意外)
据我所知,InetAddress.getByName使用本机机制来解析主机名.所以我认为错误不是由java jvm中缺少的代理配置引起的.
但是,如果其他一切工作正常,还能做什么呢?
一些(可能)有用的附加信息:
我正在使用MacBook,ifconfig显示连接到网络的接口lo0,gif0,stf0,en0,fw0,en1 - >,带有ipv4地址.
nslookup google.com 在控制台上返回 ** server can't find google.com: NXDOMAIN
网络中的Windows机器上的相同代码产生相同的异常
有关此错误原因的任何想法?或者还有其他方法来解析java中的主机名?
ip是一对一映射的主机名吗?主机名如何有多个IP地址?根据Java的getAllByName,它返回一个hostName的ips列表,但是它的文档似乎暗示或者至少没有解释一对多的映射:
The host name can either be a machine name, such as "java.sun.com", or a textual representation of its IP address.
我目前有一个设置,在我的应用程序控制器中使用此before_filter强制SSL或http我需要它:
def force_ssl
if params[:controller] == "sessions"
if !request.ssl? && Rails.env.production?
redirect_to :protocol => 'https://', :status => :moved_permanently
end
else
if request.ssl? && Rails.env.production?
redirect_to :protocol => 'http://', :status => :moved_permanently
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想做的是https://secure.example.com在使用SSL时使用,但http://example.com在不使用SSL时继续使用.有没有办法可以在主机名之间切换,具体取决于我是否使用SSL?
我是否可以从完全限定的名称(可以带或不带域名)获得一个简单的计算机名称(没有域名)?计算机名称是否可以在其中加上点(.)符号?
我正在尝试使用MPI和Fortran进行实现,将同一节点上的进程分成组.MPI有一个可以识别的常规吗?
我有想法通过主机名分隔这些进程,这些主机名在我正在使用的机器的节点上是相同的.但我不知道它是否适用于所有集群.
我正在远程计算机上运行脚本,我想使用scp在我的PC上复制输出文件。
我完全能够将文件从PC复制到远程PC,但显然我没有做相反的事情:
我已经尝试使用我的主机名和IP地址,分别是:
scp star_101out.txt alessandra@ip_adress:/home/alessandra/Dropbox/tesi\ alle/Python
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:
Connection timed out
lost connection
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我目前正在将openssl实现到我的应用程序中.当我必须设置BIO的主机名,IP地址和端口时,我的问题出现了.我一直都知道ip和hostname是一回事.有人可以解释一下差异.
在过去的几周里,我看到很多00:00:00的会话来自垃圾邮件服务器.我想要一种方法,不仅可以在Analytics中阻止它们,还可以在cPanel中阻止它们.
如果有人知道删除所有垃圾邮件主机名的最佳方法,请分享.
我正在尝试使用内部的Haskell应用程序创建docker镜像.但是,我的Docker容器内的应用程序中网络中其他容器的主机名的域名解析失败(但我能够wget/ ping其他容器及其主机名正确解析).
为了找到根本原因,我尝试手动解析主机名(使用Network.DNS包)并仅使用IP地址servant-client.然而,这只会产生神秘的错误消息:
Network.BSD.getProtocolByName: does not exist (no such protocol name: udp)
我想我在Docker镜像中遗漏了一些包.我尝试过安装libc6-compat但没有成功(libc6来自Debian用于编译Haskell应用程序).而且/etc/protocols包含正确的条目.码头图像中还缺少什么?
我用来运行应用程序的docker镜像是alpine:3.6- 整个dockerfile,里面没有多少.这与用于构建应用程序的图像不同(它小约20倍).
我用来构建haskell应用程序的docker镜像基于debian:stretch.Dockerfile.
这里提供了包含构建指令的整个源代码(可以跳过Angular部分):
https://github.com/carbolymer/blockchain/tree/0b041875f71b2a09dc8568ee7b0cc22460fd5624