2016-09-21 9 views
0

Я использую Services_Facebook-0.2.14 SDK PEAR, и первый из следующих строк в Facebook.php не удается:Почему это require_once терпит неудачу?

require_once 'Common.php'; 
require_once 'Services/Facebook/Common.php'; 
require_once 'Services/Facebook/Exception.php'; 

с сообщением журнала:

[21-Sep-2016 13:41:46 UTC] PHP Fatal error: require_once(): Failed opening required 'Common.php' (include_path='/home/thehanfw/php/Services') in /home/thehanfw/php/Services/Facebook.php on line 23

В моем клиенте API Facebook, я использую следующие строки для доступа к SDK:

ini_set("include_path", "/home/thehanfw/php/Services"); 
require_once "Facebook.php"; 

Я установил путь включения явно подобным образом из отчаяния, befo re мое приложение даже найдет Facebook.php. Файл Common.php присутствует, и я закомментировал require_once 'Services/Facebook/Common.php';, потому что Services уже является каталогом include, и я получал точно такую ​​же ошибку с исходным кодом.

Интересно, что эта ошибка регистрируется около 20 раз в очень быстрой последовательности, прежде чем я получу ошибку HTTP ERR_TOO_MANY_REDIRECTS в моем клиентском приложении. Это находится на общем хосте, с PHP 5.6.22.

ЛОМАЯ: Я нашел это забавным, что мой клиент приложение работает нормально на моем Dev машины, хотя, но потом я понял, что только потом установил взорванной PEAR на моем компьютере, и приложение работает против SDK напрямую скачан из Facebook, названный php-graph-sdk-5.0.0. Я не знаю, была ли версия 5.0.0 FB по сравнению с версией PEAR 0.2.14, но я очистил дерьмо PEAR с моего хоста и установил FB SDK, он также работает и на хосте.

+0

Я думаю, что PHP не указывает на правильную папку. Ваш include_path выглядит нормально (так как Facebook.php находится там, он делает хороший базовый каталог, (я прав?)). Таким образом, если вы удалите часть 'Services /' из 'require_once 'Services/Facebook/Common.php';' Я думаю, что она решится нормально. – Werner

+0

Я сделал, и это сработало, тогда я нашел ту же проблему в 'Common.php'. Это код PEAR, а не мой вообще, и я очень незнакома с ним, поэтому я сообщу им, но не пытаюсь его исправить. – ProfK

ответ

0

Файлы кода PEAR-пакетов имеют операторы require_once, которые работают только в том случае, если у вас есть каталог корневого пакета в вашем пути включения. В вашем случае путь включения должен включать по крайней мере /home/thehanfw/php/, так как именно здесь вы (вручную) извлекли пакет.

Извлечение PEAR пакетов вручную is not recommended, если вы действительно не знаете, что вы делаете:

We removed this section, because, today, manually installing a package requires a deeper understanding of the way how packages are organized and what happens during the installation process. You should read the section about the package.xml in the Developers Guide (package.xml and package.xml 2.0), if you really want install a package without the PEAR installer.

Вы, видимо, нет, и это не удалось.


Пакет PEAR был выпущен в 2010 году, а это 6 лет назад. Вам лучше работать с официальным API.

Смежные вопросы