Die Autoload -Anbieterdateien von Symfony scheint nicht zu funktionieren
-
22-10-2019 - |
Frage
Ich baue ein Symfony 1.4 -Projekt und versuche, Birnen zu benutzen Crypt_rsa Paket. Leider wurde das Paket seit einiger Zeit nicht mehr aktualisiert, also anstatt ein einfaches zu tun pear install
Aus der Befehlszeile möchte ich es in meine einbeziehen lib/vendor
Projektpfad, damit ich verschiedene Code -Teile für die Verwendung in PHP5 ändern kann. (Es führt derzeit einige Warnungen und strenge Fehler aus, und ich möchte keine strikte Fehlerprüfung deaktivieren).
Ich habe eine erstellt autoload.yml
Datei in meinem config
Pfad, der jetzt Folgendes enthält:
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor/Crypt
recursive: true
Ich versuche dann, die Klasse crypt_rsa_keypair zu verwenden (Quelle) auf folgende Art:
$keyPair = new Crypt_RSA_KeyPair(128);
Dies führt zu dem folgenden Fehler:
Warnung: Request_once (Crypt/RSA/ERRAGEHANDLER.PHP) [Funktion.Require-Once]: Stream nicht geöffnet: Keine solche Datei oder Verzeichnis in /app_patpat/lib/vendor/crypt/rsa/keypair.php online 28
Fataler Fehler: einmalig benötigt() [Funktion.RequireFrau /app_patpat/lib/vendor/crypt/rsa/keypair.php online 28
Betrachten Sie in die Datei crypt/rsa.php (Quelle), es hat fordert. Symfony, um alles automatisch zu automatisieren (dh nicht rekursiv Autoladung) - nur die RSA.PHP -Datei. Die Anforderungsaufrufe sind jedoch alle spezifisch für den Ordner, der den Krypta -Ordner enthält, was bedeutet, dass das Autoload sicherstellen muss, dass beim Laden rsa.php ihn vom richtigen Pfad lädt, sodass jede dieser Dateien korrekt geladen werden kann.
In diesem Sinne habe ich ein paar verschiedene Einstellungen ohne Glück ausprobiert:
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor
files: [Crypt/RSA.php]
recursive: false
und:
# moved "Crypt" folder into a subfolder named "pear"
autoload:
Crypt_RSA:
path: %SF_LIB_DIR%/vendor/pear
recursive: false
Jeder dieser neuen Versuche führte zu einem anderen Fehler, bei dem die Klasse Crypt_Rsa_keypair einfach nicht ganz gefunden wurde.
Fataler Fehler: Klasse 'crypt_rsa_keypair' nicht gefunden in /app_patpat/lib/model/doctrine/sfdoctrineGuardplugin/sfguarduser.class.php online 70
Ich habe versucht, die Dokumente zu durchsuchen, aber die meisten meiner Google -Suchanfragen verweisen auf Symfony -Dokumente für 1.0 und nicht auf 1.4, und alle Dokumente sind im Allgemeinen vage auf Autoloading -Anbieterdateien.
Ich nehme an, eine andere Option wäre es, die RSA.php -Datei, die ich brauche sollte auch sein).
Lösung
Sie können versuchen, Ihren benutzerdefinierten Autoloader für das Paket von Crypt_RSA -Anbieter zu erstellen und ihn in der ProjectConfiguration zu registrieren, wie sie Präsentiert in der Dokumentation der Rookeet (Bei Verwendung von Zend Lucene).