无法使用 facebook PHP sdk 更新状态:无法打开文件
unable to update status using facebook PHP sdk: couldn't open file
我正在尝试使用 Facebook PHP SDK 更新 Facebook 状态。
我已经使用以下代码多次更新了我的状态:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', array(
'message' => $message
)))->execute();
} catch(FacebookRequestException $e) {
.....
}
但在我尝试更新此状态时出现错误:
RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace
令人惊讶的是,我已经成功地从我的本地主机更新了这个状态。但在生产服务器中它抛出错误。
错误是:
Error Message: couldn't open file "RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace"
File: .../vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php
Error Code: 26
Line: 150
TraceAsString: #0 .../vendor/facebook/php-sdk-v4/src/Facebook/FacebookRequest.php(248): Facebook\HttpClients\FacebookCurlHttpClient->send()
#1 .../Demo.php(146): Facebook\FacebookRequest->execute()
#2 .../DemoDemo.php(31): Demo->execute()
#3 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(112): FacebookJobCommand->fire()
#4 .../vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute()
#5 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run()
#6 .../vendor/symfony/console/Symfony/Component/Console/Application.php(889): Illuminate\Console\Command->run()
#7 .../vendor/symfony/console/Symfony/Component/Console/Application.php(193): Symfony\Component\Console\Application->doRunCommand()
#8 .../vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun()
#9 .../artisan(59): Symfony\Component\Console\Application->run()
#10 {main}
不知道是什么问题。任何想法伙计们???
谢谢
您的问题是邮件以 @
开头。 cURL 将 POST
请求中以 @
开头的任何参数视为文件名,并尝试加载和发送该数据的文件内容作为该参数。这对于文件上传之类的事情非常有用,但你的情况有问题。
你应该可以通过用 http_build_query
包装你的 FacebookRequest
参数来解决这个问题,如下所示:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', http_build_query(array(
'message' => $message
))))->execute();
} catch(FacebookRequestException $e) {
.....
}
编辑:
@ceejayoz 的回答对我帮助很大。我在错误的道路上工作。但主要问题是 @
。如果 ceejayoz
没有告诉我这一点,我可能会花更多的时间来弄清楚。如果有办法接受两个答案,我也很乐意接受 ceejayoz
。谢谢。
原文:
最后我决定从字符串中删除开头的@。所以我用过这个:
if(strpos($message, "@") === 0){
$message = substr($message, 1);
}
我没有找到解决方案,所以我使用了这个路径。如果您有任何其他解决方案,请 post.
我正在尝试使用 Facebook PHP SDK 更新 Facebook 状态。 我已经使用以下代码多次更新了我的状态:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', array(
'message' => $message
)))->execute();
} catch(FacebookRequestException $e) {
.....
}
但在我尝试更新此状态时出现错误:
RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace
令人惊讶的是,我已经成功地从我的本地主机更新了这个状态。但在生产服务器中它抛出错误。 错误是:
Error Message: couldn't open file "RiversofGrue: Returns To The Palace http://clc.li/cxG #Grueheads #horror @crashpalace"
File: .../vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php
Error Code: 26
Line: 150
TraceAsString: #0 .../vendor/facebook/php-sdk-v4/src/Facebook/FacebookRequest.php(248): Facebook\HttpClients\FacebookCurlHttpClient->send()
#1 .../Demo.php(146): Facebook\FacebookRequest->execute()
#2 .../DemoDemo.php(31): Demo->execute()
#3 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(112): FacebookJobCommand->fire()
#4 .../vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute()
#5 .../vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run()
#6 .../vendor/symfony/console/Symfony/Component/Console/Application.php(889): Illuminate\Console\Command->run()
#7 .../vendor/symfony/console/Symfony/Component/Console/Application.php(193): Symfony\Component\Console\Application->doRunCommand()
#8 .../vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun()
#9 .../artisan(59): Symfony\Component\Console\Application->run()
#10 {main}
不知道是什么问题。任何想法伙计们??? 谢谢
您的问题是邮件以 @
开头。 cURL 将 POST
请求中以 @
开头的任何参数视为文件名,并尝试加载和发送该数据的文件内容作为该参数。这对于文件上传之类的事情非常有用,但你的情况有问题。
你应该可以通过用 http_build_query
包装你的 FacebookRequest
参数来解决这个问题,如下所示:
try {
$session = new FacebookSession($page_token);
$session->validate();
(new FacebookRequest($session, 'POST', '/' . $id . '/feed', http_build_query(array(
'message' => $message
))))->execute();
} catch(FacebookRequestException $e) {
.....
}
编辑:
@ceejayoz 的回答对我帮助很大。我在错误的道路上工作。但主要问题是 @
。如果 ceejayoz
没有告诉我这一点,我可能会花更多的时间来弄清楚。如果有办法接受两个答案,我也很乐意接受 ceejayoz
。谢谢。
原文:
最后我决定从字符串中删除开头的@。所以我用过这个:
if(strpos($message, "@") === 0){
$message = substr($message, 1);
}
我没有找到解决方案,所以我使用了这个路径。如果您有任何其他解决方案,请 post.