Неустранимая ошибка PHP: класс 'OAuth'

Я искал сайт часами в поисках ответа, и мне ничего не помогло. Я установил PHP/Apache2/PECL/OAuth и отредактировал php.ini для extension=oauth. Я получаю эту ошибку все, что я набираю "php example.php", я установил токен и все необходимое в example.php

Неустранимая ошибка PHP: класс «OAuth» не найден в /home/twitter/TwitterAutoReply.php в строке 22

Мои файлы php: example.php и TwitterAutoReply.php.

https://raw.github.com/gist/820281/303a61ee9b324070e803e51806552e64fccfdd4c/example.php  и https://gist.github.com/raw/820281/6bf1b6d78dd05daef319ce84a88eedf139a44b5a/TwitterAutoReply.php


person iLearnSomethingNew    schedule 03.12.2011    source источник
comment
Судя по ошибке, вы не можете запустить class OAuth, который связан с программированием (файл PHP), а не с расширением apache.   -  person Jakub    schedule 03.12.2011
comment
Удивительно, но на самом деле это расширение. php.net/manual/en/class.oauth.php   -  person Tom van der Woerdt    schedule 04.12.2011


Ответы (4)


Из-за ошибки вы не импортируете пакет oauth в файл php.ini. Для Ubuntu вам необходимо установить oauth:

sudo pecl install oauth

Затем включите пакет oauth в свой php.ini. Если вы не знаете, где находится файл, вы можете использовать:

sudo find / -name "oauth.so"

Используя путь к расширению, добавьте следующее в ваш php.ini:

extension=/path/to/oauth/package/oauth.so

Перезапустите апач и повторите попытку.

person Nielsvh    schedule 10.04.2012

Убедитесь, что расширение действительно загружено. Чтобы убедиться, что это так, просто спросите PHP что-нибудь о расширении OAuth в такой команде:

php --re oauth

Если это не показывает информацию о модуле, а вместо этого выдает ошибку, вы будете знать, что он не загружен. Кроме того, вы можете просто перечислить все загруженные модули с помощью php -m.

Попробуйте загрузить расширение вручную, используя -z oauth в своей команде. Пример: php -z oauth example.php. Если это работает, вы неправильно отредактировали php.ini.

person Tom van der Woerdt    schedule 03.12.2011
comment
root@q8edit /oauth-1.2.2 # php -z oauth /home/twitter/example.php Не удалось загрузить oauth: oauth: невозможно открыть общий объектный файл: нет такого файла или каталога PHP Неустранимая ошибка: класс 'OAuth' не найден в /home/twitter/TwitterAutoReply.php в строке 22 - person iLearnSomethingNew; 04.12.2011
comment
И вот ваш ответ - он даже не может найти файл. Убедитесь, что вы поместили его в правильный каталог. Мой PHP.ini должен был иметь extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20090626/, прежде чем он заработал - это путь, по которому PECL поместил свой материал в моем случае, но это может быть другим для вас. - person Tom van der Woerdt; 04.12.2011
comment
обязательно перезапустите службу httpd, если приведенная выше команда показывает, что OAuth установлен, но у вас все еще есть проблемы, это было исправлением в моем случае. - person knutter539; 22.07.2020

Команда php --re oauth решила мою проблему.

Кажется, что-то не так с кодом php.ini. команда выдает ошибку, я удалил эти строки и переустановил oauth, перезапустил httpd, и он успешно загружает это расширение.

person lx24    schedule 01.11.2012

Я работал на клиенте 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(...

person Evgeni Obukhovsky    schedule 23.04.2020