【发布时间】:2011-05-13 15:01:05
【问题描述】:
我们有一个动态生成 xhtml 的 DITA XML 应用程序,在浏览器中查看时它看起来不错。
如果我尝试使用 curl 加载 url,我会收到以下错误:
Error checking function parameter 3 in call transform:transform($fDoc, LiveContent-UI:get_xsl("ui/ui_skin.xsl", ""), LiveContent-UI:get_xsl_params(untyped-value-check[xs:string, $skin], $extra_params)): The actual cardinality for parameter 1 does not match the cardinality declared in the function's signature: LiveContent-Util:browser_from_user_agent($a as xs:string) xs:string. Expected cardinality: exactly one, got 0.
XQuery Stack TraceLiveContent-Util:browser_from_user_agent(xs:string) 161:55
LiveContent-UI:get_xsl_params(xs:string, node()) 145:25
LiveContent-UI:get_html(xs:string, xs:string, node(), node()) 313:25
LiveContent-Pub:home(xs:string, xs:string, xs:string) 65:17
Java Stack Trace:Class Name Method Name File Name Line
org.exist.xquery.DynamicCardinalityCheck eval DynamicCardinalityCheck.java 80
org.exist.xquery.Atomize eval Atomize.java 66
org.exist.xquery.UntypedValueCheck eval UntypedValueCheck.java 75
org.exist.xquery.DynamicTypeCheck eval DynamicTypeCheck.java 61
org.exist.xquery.FunctionCall eval FunctionCall.java 185
org.exist.xquery.AbstractExpression eval AbstractExpression.java 61
org.exist.xquery.PathExpr eval PathExpr.java 241
org.exist.xquery.AttributeConstructor eval AttributeConstructor.java 95
org.exist.xquery.ElementConstructor eval ElementConstructor.java 212
org.exist.xquery.AbstractExpression eval AbstractExpression.java 61
org.exist.xquery.PathExpr eval PathExpr.java 241
org.exist.xquery.ElementConstructor eval ElementConstructor.java 271
org.exist.xquery.AbstractExpression eval AbstractExpression.java 61
org.exist.xquery.PathExpr eval PathExpr.java 241
org.exist.xquery.DebuggableExpression eval DebuggableExpression.java 56
org.exist.xquery.DebuggableExpression eval DebuggableExpression.java 63
org.exist.xquery.LetExpr eval LetExpr.java 208
org.exist.xquery.BindingExpression eval BindingExpression.java 158
org.exist.xquery.AbstractExpression eval AbstractExpression.java 61
org.exist.xquery.PathExpr eval PathExpr.java 241
我完全不知道出了什么问题。
PHP Curl 代码如下:
$ch = curl_init();
/**
* Set the URL of the page or file to download.
*/
curl_setopt($ch, CURLOPT_URL, 'http://onlineservices.letterpart.com/sitemap.xml;jsessionid=1j1agloz5ke7l?id=1j1agloz5ke7l');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);
curl_close ($ch);
$xml = new SimpleXMLElement($data);
foreach ($xml->url as $url_list) {
$url = $url_list->loc;
echo $url ."<br>";
//file_get_contents($url);
echo $url ."<br>";
$ch = curl_init($url); //load the urls
echo $url ."<br>";
curl_setopt($ch, CURLOPT_TIMEOUT_m2, 20); //No need to wait for it to load. Execute it and go.
curl_exec($ch); //Execute
curl_close($ch); //Close it off
有人可以帮忙吗?我有点不知所措,因为这超出了我的技能范围。
谢谢,
编辑:
有人建议我添加一个用户代理,所以我添加了以下内容:
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (兼容; MSIE 5.01; Windows NT 5.0)");
现在我的日志中出现以下错误:
[13-May-2011 16:30:14] PHP Notice: Use of undefined constant CURLOPT_TIMEOUT_m2 - assumed 'CURLOPT_TIMEOUT_m2' in /home/digital1/public_html/dev/sitemap.php on line 43
[13-May-2011 16:30:14] PHP Warning: curl_setopt() [<a href='function.curl-setopt'>function.curl-setopt</a>]: Invalid curl configuration option in /home/digital1/public_html/dev/sitemap.php on line 43
这里有问题的两行(43)是:
curl_setopt($ch, CURLOPT_TIMEOUT_m2, 20); //No need to wait for it to load. Execute it and go.
我似乎使用 Googlebot 代理的运气更好:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
实际上我正在将内容写入屏幕,但我的日志仍然显示这些错误。
【问题讨论】: