wget在本地域上失败

时间:2014-05-19 11:08:45

标签: php apache wget

我有一个带有apache的Red Hat linux盒子,运行多个域,包括a.com和b.com。

我有一个php脚本a.com/wget.php,它调用exec()来下载本地域b.com上的文件。从命令行运行php脚本是成功的。

但是从网页运行此脚本会导致404错误。命令是:

    /usr/bin/wget -k -S --save-headers --keep-session-cookies 
    -O <local-file-name> -o <local-log-file-name> -U \"Mozilla/5.0
    (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 
    Firefox/24.0\" --max-redirect=100 "http://b.com/page.php"

对于此次调用,没有日志消息写入域b.com的Apache访问日志文件。

但是服务器访问日志文件(/ var / log / httpd / access_log)不为空,它表明在服务器上尝试打开页面“/page.php”(访问日志中的链接有没有域名)。

    xx.xx.xx.xx - - [19/May/2014:12:02:49 +0100] "GET /page.php 
    HTTP/1.0" 404 285 "-" "Mozilla/5.0 (Macintosh; 
    Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"

服务器错误日志(/ var / log / httpd / error_log)给出了以下错误:

    [Mon May 19 12:02:49 2014] [error] [client xx.xx.xx.xx] 
    File does not exist: /var/www/vhosts/default/htdocs

所以看起来某些东西正在从“http://b.com/page.php”剥离域名,而wget尝试连接的结果URL是“/page.php”。鉴于服务器上有许多域,这不起作用。

有没有人碰到过这个?是否有一些设置在wget或php或apache中会导致这种情况不会发生?我根据有关类似问题的建议尝试了不同的东西,但迄今为止没有任何工作。

感谢。

1 个答案:

答案 0 :(得分:0)

问题原来不在wget中,而是在防火墙设置中。从防火墙后面执行的wget调用是将域解析为外部IP地址,并且与外部IP地址的连接失败。在防火墙中纠正此问题修复了wget问题。