致命错误: 类 'OAuth' 未找到

11

我正在尝试连接 LinkedIn API,但每次访问时都会出现以下错误:

致命错误:在 /home/vhosts/*/test.php 的第8行找不到类“OAuth”

我正在使用000WebHost上的免费服务器,并且我已经阅读了免费服务器有时不支持OAuth的信息。我已经在另一台免费服务器上尝试了它,但是仍然收到相同的错误消息,所以我的问题是如何检查该服务器是否支持使用OAuth?

这是我的代码:

// Fill the keys and secrets you retrieved after registering your app
$oauth = new OAuth("abcd123456", "efgh987654");
$oauth->setToken("abcd1234-efgh987-9988", "9876abcd-123asdf-1122");

$params = array();
$headers = array();
$method = OAUTH_HTTP_METHOD_GET;

// Specify LinkedIn API endpoint to retrieve your own profile
$url = "http://api.linkedin.com/v1/people/~";

// By default, the LinkedIn API responses are in XML format. If you prefer JSON, simply       specify the format in your call
// $url = "http://api.linkedin.com/v1/people/~?format=json";

// Make call to LinkedIn to retrieve your own profile
$oauth->fetch($url, $params, $method, $headers);

echo $oauth->getLastResponse();

这些键只是被LinkedIn开发者入门指南上的键所替换。

提前感谢您的帮助。

4个回答

11
OAuth是一个PECL扩展,它必须编译到PHP中或作为一个扩展进行编译。 大多数服务器默认情况下不会安装OAuth,因为并不是每个人都会使用它。您可以要求您的主机安装它,或者如果您使用CGI,您也可以在服务器上编译它,就像我一样。如果您运行phpinfo()并查找OAuth一词,如果您安装了它,它将显示出来,否则则不会显示。

更新:请使用https://github.com/Lusitanian/PHPoAuthLib代替PECL。


我们能否在不寻求托管提供商的帮助下启用此OAuth扩展? - SagarPPanchal
@SagarPPanchal 有无数个用户空间库提供OAuth支持。最好使用它们,因为上面的软件包已不再维护。请使用我帖子底部提供的链接。 - cryptic ツ

2
我使用 HostGator 进行托管,遇到了这个问题,如果您的主机也使用 cPanel,则应该能够像我一样解决。

在文件管理器中,从实时目录向上移动一个目录,您可以看到“public_html、www、tmp”。(或单击左侧的主文件夹图标),然后您应该会找到一个 php.ini 文件。编辑该文件,在末尾添加 extension=oauth.so 并保存。

之后检查 phpinfo(),您应该会发现一个名为“OAuth”的部分,一切应该正常工作。


很重要的是你要把它添加到末尾,这就是我的问题所在。 - Goose

1
sudo apt-get update
sudo apt-get install php-oauth
sudo service apache2 restart

我认为免费服务器不允许您运行这些命令并重新启动服务器。 - RufusVS
3
虽然这段代码可能回答了问题,但是提供有关为什么和/或如何回答问题的附加上下文可以提高其长期价值。 - Donald Duck

0

对于 PHP 5.6... 首先免责声明:您需要尽快迁移到最新的稳定版 PHP 7,而不是运行 PHP 5.6!但如果目前还无法实现,这可能会帮助 Ubuntu 16.04 用户。这假设您已经安装了 ondrej/php PPA。

sudo apt-get update
sudo apt-get install libpcre3-dev
sudo apt-get install php-pear            # * see note below 
sudo apt-get install php5.6-dev          # for phpize
sudo pecl install oauth-1.2.3

# now add "extension=oauth.so" (sans quotes) to the 
# "Dynamic Extensions" area in /etc/php/5.6/apache2/php.ini

* 根据这篇文章https://askubuntu.com/a/756186/343695,“php-pear pull[s] just CLI PHP 7.0 (php7.0-cli) and that's harmless” 这个评论是在2016年发表的,现在可能不再适用。目前我还没有发现任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接