2016-11-01 3 views
1

Je souhaite utiliser la librairie phpseclib dans mon application CakePHP 2.8. Après l'installation de toutes les dépendances dans le répertoire app/Vendor j'essaie d'essayer phpseclib installation.Impossible de charger la bibliothèque phpseclib installée avec composer dans l'application CakePHP

Mais je ne suis pas capable de charger la bibliothèque:

include('Net/SFTP.php'); 
$sftp = new Net_SFTP('127.0.0.1'); 

mais cette erreur a lieu:

Error: Class 'Net_SFTP' not found

En AppController Je suis chargement généré automatiquement INCLUDE et je pensais que ce doit être fait:

require_once ROOT . DS . 'vendors' . DS . 'autoload.php'; 

Que manque-t-il?

Répondre

1

Si vous utilisez le compositeur alors vous avez juste besoin d'inclure les composeurs autoloader. Vous n'avez pas besoin d'inclure les bibliothèques spécifiques (c'est le point du composeur autochargeur).

Si vous regardez le code source de la bibliothèque, vous remarquerez qu'il s'agit d'un espace de noms (https://github.com/phpseclib/phpseclib/blob/2.0.4/phpseclib/Net/SFTP.php#L38). Vous devez donc disposer d'importer l'espace de noms avec la déclaration use, ou:

$sftp = new phpseclib\Net\SFTP('127.0.0.1');

+0

Oui, j'inclus 'autoload.php' comme mentionné ci-dessus. Et avec la classe namespace n'est pas chargé aussi (PHPStorm highlight dans phpseclib dans 'use phpseclib \ Net; 'qu'il ne le sait pas ...). – Artegon

+0

avez-vous 'composer require phpseclib/phpseclib'? Êtes-vous sûr du dossier 'vendeurs '? c'est 'vendeur 'par défaut – Federkun

0

Si vous avez composer require phpseclib/phpseclib au lieu de composer require phpseclib/phpseclib:~1.0 vous utilisez 2.0. Net_SFTP est seulement dans la branche 1.0. Dans la branche 2.0, c'est \ phpseclib \ Net \ SFTP.

http://phpseclib.sourceforge.net/2.0.html élabore.