Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Guzzle不在一台服务器上工作,但在另一台PHP FB SDK上工作_Php_Facebook_Facebook Graph Api_Laravel 5.2_Guzzle6 - Fatal编程技术网

Guzzle不在一台服务器上工作,但在另一台PHP FB SDK上工作

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)=

我在一个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)=='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