PHP致命错误:类“OAuth”

3
我在网站上搜索了几个小时,但没有找到答案。我已经安装了PHP/Apache2/PECL/OAuth并编辑了php.ini文件以启用extension=oauth。每次输入"php example.php"都会出现以下错误提示,而我已经在example.php中设置了令牌和所需的所有内容:

PHP致命错误:在/home/twitter/TwitterAutoReply.php的第22行找不到类“OAuth”

我的php文件是example.php和TwitterAutoReply.php。
链接如下:https://raw.github.com/gist/820281/303a61ee9b324070e803e51806552e64fccfdd4c/example.phphttps://gist.github.com/raw/820281/6bf1b6d78dd05daef319ce84a88eedf139a44b5a/TwitterAutoReply.php

从错误来看,您未能运行与编程有关的class OAuth(PHP文件),而不是Apache扩展。 - Jakub
令人惊讶的是,它实际上是一个扩展。http://www.php.net/manual/en/class.oauth.php - Tom van der Woerdt
4个回答

5

根据错误提示,你的php.ini文件中没有导入oauth包。 对于Ubuntu系统,你需要安装oauth:

sudo pecl install oauth

然后在你的php.ini文件中引入oauth包。如果你不知道该文件的位置,可以使用以下命令:

sudo find / -name "oauth.so"

使用扩展的路径,将以下内容添加到您的php.ini文件中:
extension=/path/to/oauth/package/oauth.so

重新启动Apache,然后再试一次。


4

确保扩展已经被加载。为了验证它是否被加载,可以在命令中询问PHP OAuth扩展的相关信息,例如:

php --re oauth

如果此命令未显示有关模块的信息,而是给出了错误提示,则说明该模块未加载。此外,您可以使用 php -m 命令列出所有已加载的模块。
尝试手动加载扩展,使用 -z oauth 在您的命令中。例如: php -z oauth example.php。如果这样做成功,那么您没有正确编辑 php.ini 文件。

root@q8edit /oauth-1.2.2 # php -z oauth /home/twitter/example.php 无法加载oauth:oauth:无法打开共享对象文件:没有那个文件或目录 PHP致命错误:在/home/twitter/TwitterAutoReply.php的第22行找不到类'OAuth' - iLearnSomethingNew
4
这就是答案——它甚至无法找到该文件。确保将其放置在正确的目录中。在我的情况下,我的PHP.ini必须设置为extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ 才能正常工作——这个路径是PECL放置其内容的位置,但你的情况可能不同。 - Tom van der Woerdt
如果上述命令显示OAuth已安装但您仍然遇到问题,请确保重新启动httpd服务,这是我解决问题的方法。 - knutter539

1
命令php --re oauth解决了我的问题。
看起来是php.ini中存在一些错误编码。该命令给出了错误提示,我删除了这些行并重新安装oauth,重新启动httpd并成功加载了该扩展程序。

0
我正在处理oauth客户端,但在无法更改环境(添加php-oauth扩展)的情况下,以下解决方案适用于我:
1)安装Zend OAuth
composer require zendframework/zendoauth
2)在PHP代码中使用以下内容: $hmac = new \ZendOAuth\Signature\Hmac($consumerSecret, $accessTokenSecret, 'SHA1'); return $hmac->sign($data, $method, $url);
而不是 $oauth = new OAuth(... $oauth->generateSignature(...

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