Проблема с реализацией библиотеки simplesaml php в мое веб-приложение - PullRequest
1 голос
/ 09 января 2020

Я пытался внедрить библиотеку simplesaml php в свое веб-приложение. Но когда я вызываю функцию requireAuth () , я получаю PHP фатальное сообщение об ошибке. Uncaught Exception: Loader: недопустимый символ в имени файла ..... Похоже, он не может разрешить Class SimpleSAML \ Module \ saml \ Auth \ Source \ SP Но я не знаю почему. У кого-нибудь есть идеи как это исправить? Я уже удалил всю установку simplesaml php и переустановил ее.

Я использую следующий код:

require 'var/www/simplesamlphp/lib/_autoload.php';
$lAuthSrc = new \SimpleSAML\Auth\Simple('default-sp');
if (!$lAuthSrc->isAuthenticated()) {
  $lAuthSrc->requireAuth();
}
$lAttributes = $lAuthSrc -> getAttributes();
foreach($lAttributes as $lAttribute) {
  print_r($lAttribute);
}

Некоторые дополнительные сведения: Сконфигурированный тест источника аутентификации работает нормально. Если я вхожу через настроенный источник аутентификации, все работает нормально, и я не получаю никаких сообщений об ошибках (в этом случае функция requireAuth () не вызывается). Я использую последнюю версию simplesaml php v.1.18.3

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Спасибо всем за помощь. Я обнаружил этим утром проблему. Проблема была в автозагрузчике, который я использую для собственного приложения. Я зарегистрировал автозагрузчик приложения в другом файле, который выполняется перед кодом, который вы видите выше. И simplesaml php использует некоторые условия, такие как:

if (!class_exists($className))

И, поскольку я зарегистрировал автозагрузчик приложения, прежде чем функция class_exists проверила, существует ли класс в моем приложении. В моем приложении я не использую пространства имен, и это было проблемой.

Чтобы устранить эту проблему, я отменил регистрацию автозагрузчика приложения перед использованием кода simplesaml php и снова зарегистрировал автозагрузчик после simplesaml php code.

Надеюсь, это избавит некоторых из вас от головной боли.

0 голосов
/ 09 января 2020

Честно говоря, похоже, что ваш путь испорчен по требованию ... вы уверены, что должны использовать:

require 'var/www/simplesamlphp/lib/_autoload.php';

, а не

require '/var/www/simplesamlphp/lib/_autoload.php';

У вас действительно есть подкаталог var / www относительно расположения скрипта? Это выглядит неправильно для меня. Если вы включите этот первый / перед var, он сделает этот путь абсолютным по отношению к типичному месту установки SSP.

...