小编Mih*_*org的帖子

卷曲错误:无法路由到主机

因此,我们正在使用PHP构建一个Web应用程序,并且正在尝试向外部API发出请求。问题是我们遇到卷曲错误:

cURL错误7:无法连接到external.api.com端口443:无法路由到主机

现在有一点背景。

  • 我们正在使用Guzzle发出请求。
  • 我们托管在运行于Linux机器上的Apache上,并且还使用SSL。
  • API也使用SSL,因此错误消息中的端口443。
  • HTTP请求包括用于认证的证书。

我设法使它在两个不同的开发环境上运行,但不在生产环境上运行。我怀疑问题出在Apache的配置中,好像我们没有使它可用于向某些IP或端口发出请求一样。我不知道如何检查。我已经读到我可能必须更改文件/ etc / network / interface,但是我没有找到关于该写什么的任何信息。

我也读过我必须跑来$ netstat -rn寻找答案,但是我不确定在那里要看什么。

编辑:

没有任何参数和任何内容,甚至无法发出简单的get请求。但是我可以向https://google.comhttps://facebook.com发出请求。会在后面写更多。

php apache ssl curl guzzle

7
推荐指数
1
解决办法
1万
查看次数

laravel 5.1以多对多的关系获得每个类别的相关5个新闻

我被困在这里从2-3小时开始尝试.

我有很多关系:

class Category extends Model
{
    public function news()
    {
        return $this->belongsToMany('App\News');
    }
}  

class News extends Model
{
    public function categories()
    {
        return $this->belongsToMany('App\Category');
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取相关类别的最新5条新闻:

$front_categories = Category::with(array(
        'news'=>function($query){
        $query->where('publish','1')->orderBy('created_at', 'desc')->take(5);}))
       ->where('in_front', 1)->get();
Run Code Online (Sandbox Code Playgroud)

上面的查询对我不起作用,它总共给出了五个结果,而不是每个类别的5个结果.

php many-to-many eager-loading laravel

6
推荐指数
1
解决办法
519
查看次数

为 http 请求准备 ssl 证书

我会解释一下情况。

简而言之,我已经收到了 ssl 证书,我需要将其包含在一些 HTTP 请求中。而且我还没有成功地做到这一点。

我正在使用Guzzle来提出请求。

我已收到以字符串形式开头的证书

-----BEGIN CERTIFICATE-----

并以

-----END CERTIFICATE-----

首先,我不是 100% 确定,我必须如何处理它才能使其准备好包含在请求中。我将其保存为mycert.crt文件。正如 Guzzle 文档提到的,他们需要一个 .pem 文件,我研究了将 .crt 文件转换为 .pem 文件。找到了这个 stackoverflow 线程,尝试了它们,但它不起作用(顺便说一句,.crt 和 .pem 内容是相同的)。让我解释一下,什么不起作用。

我制造了一个

$client = new GuzzleHttp\Client(['base_uri' => 'https://theuri.com']);
$client->request('GET', 'getit', ['cert' => 'path/to/mycert.pem' ]);
Run Code Online (Sandbox Code Playgroud)

结果是

[GuzzleHttp\Exception\ConnectException]                                                                                                           
cURL error 35: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
Run Code Online (Sandbox Code Playgroud)

我读到,当您在使用证书发出请求的整个过程中搞砸了某些事情时,这是一些标准错误。

我还有 private.key 文件和 request.csr,它们用于创建 SSL 密钥。不确定我现在是否需要对这些做任何事情。

我在网上没有找到太多有用的信息。我发现的线程或文章没有从头到尾解释整个过程,所以我对我尝试过的任何方法都没有信心。

编辑:

我发现我可能应该使用

$client->request('GET', '/getit', ['verify' => 'path/to/mycert.pem'])
Run Code Online (Sandbox Code Playgroud)

它给了我例外

GuzzleHttp\Exception\ConnectException with message …
Run Code Online (Sandbox Code Playgroud)

php ssl httprequest guzzle

4
推荐指数
1
解决办法
8434
查看次数

如何让 php artisantinker 显示完整的错误(消息)?

我正在尝试在 Tinker 中向外部 API 发出请求。由于响应是一个很长的错误,因此它只显示错误的开头,如下所示:

客户端错误:POST https://foreign.api/w00t导致400 Bad Request响应:Apache Tomcat/8.0.32 - 错误报告H1 {font-family:Taho(已截断...)

就这样。有没有办法让 Tinker 返回整个响应?

php error-handling laravel laravel-artisan

4
推荐指数
1
解决办法
1862
查看次数