facebook PHP SDK 不能在不同的 PHP 版本中工作
Posted
技术标签:
【中文标题】facebook PHP SDK 不能在不同的 PHP 版本中工作【英文标题】:facebook PHP SDK cannot work in different PHP versions 【发布时间】:2015-08-04 16:10:39 【问题描述】:我有一个示例代码来测试我的网站是否可以从 facebook 接收数据。我在运行 php 5.4 的 webmatrix 服务器上本地运行此代码,没有任何问题。我还在运行 PHP 5.5 的 WAMP 服务器的机器上运行该代码没有任何问题。但是当我在带有 ubuntu 12.04 和 PHP 5.5.26(根据 phpinfo() 函数)的 VM 上或在带有 PHP 5.9 的 coding.io VM 上运行它时,它没有显示输出。当然我已经到处检查了与 facebook sdk 文件夹保持相同的路径,这没关系。对于这个奇怪的问题,任何帮助将不胜感激。
这是我的测试代码:
<?php
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookSession.php');
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookRequest.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookResponse.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookSDKException.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookRequestException.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookRedirectLoginHelper.php');
require_once( '/facebook-php-sdk-v4/src/Facebook/FacebookAuthorizationException.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/GraphObject.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/GraphUser.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/GraphSessionInfo.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/Entities/AccessToken.php');
require_once( '/facebook-php-sdk-v4/src/Facebook/HttpClients/FacebookCurl.php' );
require_once( '/facebook-php-sdk-v4/src/Facebook/HttpClients/FacebookHttpable.php');
require_once( '/facebook-php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php');
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookCanvasLoginHelper;
use Facebook\FacebookRedirectLoginHelper;
$facebook = FacebookSession::setDefaultApplication('xxxxxxxxxxxxx','xxxxxxxxxxxxxx');
FacebookSession::enableAppSecretProof(false);
$session = new FacebookSession('xxxxxxxxxxxxxxxxxxxxxx');
//from user
$myurl = (isset($_POST['url']) ? $_POST['url'] : null); //not of any use here now
$objRequest = '/461598630586060';
try
$response = (new FacebookRequest($session, 'GET',$objRequest))->execute();
$response='success';
catch (FacebookRequestException $ex)
$response='fail';
catch (\Exception $ex)
$response='fail';
echo $response;
?>
【问题讨论】:
你确定php版本吗?没有5.9版本 这可能不是由 PHP 版本引起的,而是某种服务器/PHP 配置引起的。你根本没有输出?如果你在你的代码之间插入一些echo 'now my script is here';
行,这样你就可以知道哪些部分被执行了,脚本运行了多远以及它什么时候中断?您是否在某处有错误日志(我不记得默认情况下记录 PHP 错误的位置,不过,phpinfo()
应该告诉您)。
哎呀,php版本5.5.9!我尝试添加一些回声,但据我所知,在第一次“require_once”之后没有执行任何操作。但只是没有输出,我不知道为什么会这样。
【参考方案1】:
只需用require __DIR__ . '/facebook-php-sdk-v4/autoload.php';
替换所有require_once
语句即可解决问题,现在一切都像魅力一样!
【讨论】:
以上是关于facebook PHP SDK 不能在不同的 PHP 版本中工作的主要内容,如果未能解决你的问题,请参考以下文章
Facebook SDK 4 for PHP - 无需登录抓取一些事件
PHP - 仅使用 Facebook 图表从 Facebook 页面获取帖子数据
为啥 Facebook 身份验证 SDK 在不同模式下的表现如此不同?
在 PHP SDK 和 Graph API Explorer 之间获得不同的结果
在 laravel 中访问 facebook php sdk 4.0 和 Javascript sdk 上的 Token