Guzzle不在一台服务器上工作,但在另一台PHP FB SDK上工作
我在一个dev-box上有我的代码repo,当我将其移动到prod-box时,它无法完成FB调用。我的错误是: Client.php第126行中的ErrorException:参数3传递给 GuzzleHttp\Client::request()必须为数组类型,字符串为, 叫来 /var/www/mypopshare.com/vendor/guzzlehttp/guzzle/src/Client.php on 第87行,已定义 我在这一部分的代码是:Guzzle不在一台服务器上工作,但在另一台PHP FB SDK上工作,php,facebook,facebook-graph-api,laravel-5.2,guzzle6,Php,Facebook,Facebook Graph Api,Laravel 5.2,Guzzle6,我在一个dev-box上有我的代码repo,当我将其移动到prod-box时,它无法完成FB调用。我的错误是: Client.php第126行中的ErrorException:参数3传递给 GuzzleHttp\Client::request()必须为数组类型,字符串为, 叫来 /var/www/mypopshare.com/vendor/guzzlehttp/guzzle/src/Client.php on 第87行,已定义 我在这一部分的代码是: 返回substr($method,-5)=
返回substr($method,-5)=='Async'
? $this->requestAsync(substr($method,0,-5),$uri,$opts)
:$this->request($method,$uri,$opts);
两台服务器上的库都是通过composer安装的:
`
`
这在两种环境中都是相同的,并且已经完成了composer安装,以确保它们都在那里
该调用是通过sammk/laravel Facebook SDK包从Facebook PHP SDK发出的。我唯一的猜测是服务器上的一些其他配置差异,但不确定在哪里检查。我没有配置prod服务器。非常感谢您的建议。我在Ubuntu 16.04和php7.0上也遇到了同样的问题。如果在项目中不需要Guffle,则可以考虑切换。 facebook\u配置的http\u客户端\u处理程序选项 卷曲
仅供参考-我找到了与当前答案类似的解决方案。我在没有SammyK包装的情况下直接使用Facebook SDK,并且没有显式设置http_客户端_处理程序 事实证明,如果没有安装curl扩展,facebooksdk会使用Guzzle,但会使用Guzzle 5语法。我安装了Guzzle 6,因此出现此错误,因为参数已更改 我的修复方法是安装php7.0-curl。在Ubuntu 14.04 LTS上,这是:
sudo apt-get install php7.0-curl
FacebookSDK然后使用了curl,而curl没有得到这个错误,并且我不必更新任何现有代码来显式设置http_客户端_处理程序
这在安装了php curl扩展的dev上有效,但在prod上失败了。您可以查看要确认的已安装扩展的列表:
php -m
有完全相同的问题。不知道是什么引起的。我正在使用Facebook的官方composer软件包,所以我不认为这是由Laravel包装造成的。我在两台服务器上运行完全相同的(php7)版本。我在堆栈跟踪中的代码是:
Facebook\Facebook->get()
我也遇到了完全相同的问题,但是直接使用Facebook SDK而不使用SammyK的包装器。它在我的开发服务器(使用php7的最新Homestead)上工作,但在生产中失败。除了告诉FB SDK改用curl之外,还有人找到了解决方案吗?我在安装curl时遇到了麻烦,所以改用了stream
sudo apt-get install php7.0-curl
php -m