你好,我正在尝试使用 cron 在本地执行 wget,我的主机告诉我,由于本地环回,这不起作用?
我正在尝试以下命令:
wget -q -O /pathtofile/blah.xml "http://myurl/myfeed.php?id=26"
我在这里尝试做的是获取输出(rss)并将其作为 xml 保存在我的网络服务器上,我一直以来的做法是打开 url 并将源保存为 xml 并上传,所以我想自动执行这一操作。
错误文本:
--12:38:58-- http://www.myurl.com/mydir/myfeed.php?id=26 => `myfeed.php?id=26' 正在解析 www.myurl.com…myip 连接到 www.myurl.com|myip|:80... 失败:连接被拒绝。
我能做些什么来实现这个目标?
答案1
您也可以尝试使用 --bind-address 选项。
--bind-address=ADDRESS
When making client TCP/IP connections, bind to ADDRESS on the local machine. ADDRESS may be specified as a hostname or IP
address. This option can be useful if your machine is bound to multiple IPs.
并绑定到外部IP,而不是本地IP。
答案2
如果您可以修改myfeed.php
以采用命令行变量以及 $_POST/$_GET,那么您可以从 cron 执行 PHP:
php /path/to/myfeed.php --id=26
看这里有关将参数传递给命令行 PHP 的更多信息。
您需要在文件顶部执行如下操作:
define('CLI', php_sapi_name() == 'cli');
if(CLI){
$input =& $argv;
}else{
$input =& $_POST;
}
if(isset($input['id'])) // etc...
答案3
如果满足以下条件,它将起作用:
- 您的 Web 服务器正在监听本地接口;并且
- 您的 /etc/hosts 文件有指向本地 IP 的 www.myurl.com。
否则,它将失败。如果您可以执行netstat -untap
并确认您的 Web 服务器正在本地接口上侦听,它应该可以工作。