我在 Ubuntu 10.04 上安装,不知何故 curl 停止与我的用户一起工作。我总是收到:curl:(7) 无法连接到主机。它只能以 root 身份工作。有人能帮帮我吗?
答案1
我检查了curl google.com
strace 日志而关键的一行肯定是409:
connect(3, {sa_family=AF_INET, sin_port=htons(9999), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
如果我(为了测试)启动curl http://localhost:1357
,我会进入 strace:
connect(3, {sa_family=AF_INET, sin_port=htons(1357), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
因此,由于某些奇怪的原因,google.com
curl 尝试连接到而不是localhost:9999
。
您能否发帖:
/etc/hosts
/etc/nsswitch.conf
~/.bashrc
/etc/host.conf
/etc/gai.conf
- 输出
ldd /usr/bin/curl
- 输出
env
答案2
也许一个用户正在使用代理,而另一个用户没有。查看您的用户或 root 是否定义了http_proxy
或HTTP_PROXY
环境变量。
还要查看 root 是否有一个.curlrc
文件,其中包含使其工作的选项,或者您的用户是否有一个.curlrc
使其不工作的选项。
答案3
我在想,也许出于某种原因,curl 需要的某些库现在只能由 root 访问。您可以尝试以下方法:
sudo apt-get purge curl libcurl3
sudo apt-get install curl
如果这不能解决问题:
strace curl http://site.com/file.txt &> curl.log
并将输出发布到 pastebin.com 或其他地方。