Domanda

Sto costruendo un progetto di 1,4 Symfony, e sto cercando di usare PEAR Crypt_RSA pacchetto. Purtroppo, il pacchetto non è stato aggiornato in un po ', così invece di fare una semplice pear install dalla riga di comando, voglio includere nel mio percorso di progetto lib/vendor in modo che possa modificare i vari pezzi di codice per l'utilizzo in PHP5. (Attualmente causa alcuni avvertimenti ed errori severi, e non desidera disattivare rigoroso controllo degli errori).

Ho creato un file autoload.yml nel mio percorso config che ora contiene quanto segue:

autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor/Crypt
        recursive: true

I quindi tentare di utilizzare la classe Crypt_RSA_KeyPair fonte ) nel seguente modo:

$keyPair = new Crypt_RSA_KeyPair(128);

Il risultato è il seguente errore:

Attenzione : require_once (Cripta / RSA / ErrorHandler.php) [ function.require-once ]: non è riuscito a flusso aperto: Nessun file o directory in /app_path/lib/vendor/Crypt/RSA/KeyPair.php on line < strong> 28

Fatal error : require_once () [ funzione. richiedere ]: Failed opening required 'Cripta / RSA / ErrorHandler.php' (include_path = ': / opt / local / lib / php') in / app_path / lib / vendor / cripta / RSA / KeyPair.php on line 28

Guardando nel file Cripta / RSA.php ( fonte ), ha chiamate require_once per Crypt / RSA / ErrorHandler.php, Cripta / RSA / MathLoader.php, Cripta / RSA / Key.php, e Cripta / RSA / KeyPair.php, così sto pensando che non voglio symfony per caricare automaticamente tutto (cioè: non autoload ricorsivamente) - solo il file RSA.php. Tuttavia, le chiamate require_once sono tutti specifici per la cartella che contiene la cartella Cripta, il che significa che il caricamento automatico ha bisogno di fare in modo che quando viene caricato RSA.php, lo carica dal percorso corretto in modo tale che ciascuno di questi file possono essere caricati correttamente.

Con questo in mente, ho provato alcune impostazioni differenti senza fortuna:

autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor
        files:     [Crypt/RSA.php]
        recursive: false

e

# moved "Crypt" folder into a subfolder named "pear"
autoload:
    Crypt_RSA:
        path:      %SF_LIB_DIR%/vendor/pear
        recursive: false

Ognuno di questi nuovi tentativi ha provocato un errore diverso in cui la classe Crypt_RSA_KeyPair non è stato semplicemente trovato tutto.

Fatal error : Class 'Crypt_RSA_KeyPair' non trovato in /app_path/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php on line 70

Ho provato a scavare attraverso la documentazione, ma la maggior parte delle mie ricerche Google docs indico Symfony per 1,0 anziché 1,4, e tutti i documenti sono generalmente vaga sull'auto-caricamento dei file del fornitore.

suppongo un'altra opzione potrebbe essere quella di require_once manualmente il file di cui ho bisogno RSA.php, ma credo che sarebbe la rottura convenzione Symfony, e probabilmente fare qualcosa di più difficile di quanto dovrei essere (anche se questa cosa auto-caricamento sembra essere più difficile di quanto dovrebbe essere troppo).

È stato utile?

Soluzione

Si potrebbe provare a creare il caricatore automatico personalizzato per il fornitore del pacchetto Crypt_RSA e registrarlo nel ProjectConfiguration, in quanto presentato nella documentazione di Jobeet (quando si usa Zend Lucene).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top