我在本地和生产服务器(Ubuntu 14.04.2 LTS, PHP 5.5.9-1ubuntu4.11, Apache 2.4.7
)中收到奇怪的服务器 php curl错误。
基本上,对远程API的curl请求返回状态代码500响应,仅在wp_remote_get()
中,它在curl_exec()
和浏览器请求中返回状态200。
我的调试代码:
<?php
$url = 'https://yoast.com?edd_action=activate_license&license=my-license-key-here&item_name=WooCommerce+Yoast+SEO&url=https://google.com';
// this return status 200:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo '<pre>' . print_r($result, true) . '</pre>';
// this return status 500:
$testResp = wp_remote_get($url);
echo '<pre>' . print_r($testResp, true) . '</pre>';
我无法弄清楚为什么它会为wp_remote_get()
回复500。我已经尝试调整传递给wp_remote_get()
的args,但仍然使用 500 。
我还在调试时禁用了所有插件。
任何想法?
答案 0 :(得分:1)
好的,经过一些调试后,我认为问题是declare
l_numTypes numTypes;
l_count number;
begin
l_numTypes := numTypes();
for i in 1 .. 100 loop
l_numTypes.extend(1);
l_numTypes(l_numTypes.last) := numType(i);
end loop;
select sum(n.myNum) into l_count from table(l_numTypes) n;
select sum(testNumberPackage.ReturnNum(numtype(n.mynum))) into l_count from table(l_numTypes) n; --causes the error
dbms_output.put_line(l_count);
end;
/
5050
中设置的Wordpress默认用户代理字符串,在为wp-includes/class-http.php
创建http请求时设置。
该选项有一个过滤器,但默认设置如下:
wp_remote_get()
所以在我的情况下,&#39;用户代理&#39;标头值为:'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ),
当我挂钩过滤器"Wordpress/4.3.1; http://myurl.com"
并返回一个空字符串,甚至是一个不同的用户代理字符串,例如:http_headers_useragent
时,请求将返回一个成功的200响应。
不确定分号是否是真正的罪魁祸首,但如果我将其删除并将用户代理字符串设置为'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2'
,则请求也会成功。
答案 1 :(得分:0)
我遇到了同样的问题 - 当经典的Curl调用正在进行调用时,wp_remote_get无法正常工作。事实上,问题在于用户代理&#39; 。这是我的解决方案基于&#34; chuuke&#34;调查结果
files=(test0.csv test1.csv test2.csv)
由于