卷曲 - 请求wp_remote_get()响应500,curl_exec响应200

时间:2015-10-16 03:53:31

标签: php wordpress curl ubuntu-14.04 php-curl

我在本地和生产服务器(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

我还在调试时禁用了所有插件。

任何想法?

2 个答案:

答案 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)

由于