5

我在 api 路由文件中有这条路由

Route::post('/user/register', 'HomeController@register');

注册功能是

public function register(Request $request)
 {
    $user = User::create([
        ...
    ]);
    return $this->getAccessToken($request);
}

public function getAccessToken(Request $request)
{
    $url = url('/oauth/token');
    $headers = ['Accept' => 'application/json'];
    $http = new Client;

    $response = $http->post($url, [
        'headers' => $headers,
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => 'my_client_id',
            'client_secret' => 'my_client_secret',
            'username' => 'username',
            'password' => 'password'
        ],
    ]);

    return json_decode((string)$response->getBody(), true);
}

现在,当我将发布请求发送到创建用户的 url 时,请求继续加载并且没有响应,并且整个应用程序一直挂起,直到我关闭 IDE - phpstorm - 我/oauth/token从邮递员向同一个 url 发送相同的参数,它工作正常. 任何帮助或任何人告诉我我错过了什么?

4

2 回答 2

1

问题是当 url 包含端口时curl不起作用

本地主机:8000

于 2017-01-28T20:30:40.220 回答
0

在 Stack Overflow 上查看这个问题:

为什么 file_get_contents 可以在 google.com 上使用,但不能在我的网站上使用?

对于使用 PHP 内置 Web 服务器(在我的例子中是 Laravel)遇到此问题的任何人,这是由于您的请求被 file_get_contents() / curl 函数阻止所致。

开发服务器的文档说

PHP applications will stall if a request is blocked.

由于 PHP 内置服务器是单线程的,在您的服务器上请求另一个 url 将停止第一个请求并超时。

作为解决方案,您可以使用 nginx(LEMP 堆栈)或其他 Web 服务器。

编辑:到目前为止,我真的建议您使用 Homestead 作为 PHP 项目的开发环境。它为您节省了大量的配置工作,为更多项目创建虚拟主机和数据库配置。

于 2017-09-21T17:58:30.847 回答