2

我在开发盒上有我的代码仓库,当我将它移到产品盒时,它无法完成 FB 调用。我的错误是:

Client.php 第 126 行中的 ErrorException:传递给 GuzzleHttp\Client::request() 的参数 3 必须是数组类型,给定字符串,在 /var/www/mypopshare.com/vendor/guzzlehttp/guzzle/src/Client 中调用.php 在第 87 行并定义

我本节的代码是: return substr($method, -5) === 'Async' ? $this->requestAsync(substr($method, 0, -5), $uri, $opts) : $this->request($method, $uri, $opts);

两台服务器上的库都是通过 composer 安装的:`

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "illuminate/html": "^5.0",
    "laravelcollective/html": "^5.2",
    "league/flysystem-aws-s3-v3": "~1.0",
    "webpatser/laravel-uuid": "^2.0",
    "intervention/image": "^2.3",
    "doctrine/dbal": "^2.5",
    "guzzlehttp/guzzle": "^6.1",
    "sammyk/laravel-facebook-sdk": "^3.3"
},

`

这在两种环境中都是一样的,并且已经完成了 composer install 以确保它们在那里。

调用是通过 sammk/laravel-facebook-sdk 包从 Facebook PHP SDK 发出的。我唯一的猜测是服务器上的其他一些配置差异,但不确定在哪里检查。我没有配置产品服务器。任何建议表示赞赏。

4

2 回答 2

4

仅供参考 - 我找到了一个类似于当前答案的解决方案。我在没有 SammyK 包装器的情况下直接使用 Facebook SDK,并且没有明确设置 http_client_handler。

事实证明,如果没有安装 curl 扩展,Facebook SDK 会退回到 Guzzle,但使用 Guzzle 5 语法。我安装了 Guzzle 6,所以出现此错误是因为参数已更改。

我的解决方法是安装 php7.0-curl。在 Ubuntu 14.04 LTS 上,这是:

sudo apt-get install php7.0-curl

然后 Facebook SDK 使用 curl 没有收到此错误,我不必更新任何现有代码来显式设置 http_client_handler。

这适用于安装了 php-curl 扩展的开发人员,但在没有安装时在产品上失败。您可以查看已安装扩展的列表以确认:

php -m
于 2016-06-06T17:54:41.873 回答
2

我在带有 php7.0 的 Ubuntu 16.04 上遇到了同样的问题。如果你的项目不需要 guzzle,你可以考虑将 sammk/laravel-facebook-sdk 包配置文件的facebook_config 的 http_client_handler 选项切换为 curl。

'facebook_config' => [
    'app_id' => env('FACEBOOK_APP_ID'),
    'app_secret' => env('FACEBOOK_APP_SECRET'),
    'default_graph_version' => 'v2.6',
    //'enable_beta_mode' => true,
    'http_client_handler' => 'curl',
],
于 2016-05-01T20:25:41.167 回答