我有一个带有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中会导致这种情况不会发生?我根据有关类似问题的建议尝试了不同的东西,但迄今为止没有任何工作。
感谢。
答案 0 :(得分:0)
问题原来不在wget中,而是在防火墙设置中。从防火墙后面执行的wget调用是将域解析为外部IP地址,并且与外部IP地址的连接失败。在防火墙中纠正此问题修复了wget问题。