Pregunta

Estoy construyendo un proyecto Symfony 1.4, y estoy intentando usar Pear's Cripto_rsa paquete. Desafortunadamente, el paquete no se ha actualizado en un tiempo, por lo que en lugar de hacer un simple pear install Desde la línea de comando, quiero incluirlo en mi lib/vendor Ruta del proyecto para que pueda modificar varias piezas de código para su uso en PHP5. (Actualmente causa algunas advertencias y errores estrictos, y no quiero deshabilitar la verificación de errores estrictos).

Creé un autoload.yml Archivo en mi config camino que ahora contiene lo siguiente:

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

Luego intento utilizar la clase crypt_rsa_keypair (fuente) en la siguiente manera:

$keyPair = new Crypt_RSA_KeyPair(128);

Esto da como resultado el siguiente error:

Advertencia: require_once (cripto/rsa/errorhandler.php) [function.require-once]: no se pudo abrir la transmisión: no hay dicho archivo o directorio en /app_path/lib/vendor/crypt/rsa/keypair.php en línea 28

Error fatal: requerir una vez() [function.require]: Abrió la apertura requerida 'cripta/rsa/errorhandler.php' (include_path = '.:/Opt/local/lib/php') en /app_path/lib/vendor/crypt/rsa/keypair.php en línea 28

Mirando el archivo cripto/rsa.php (fuente), tiene llamadas request_once para cripto/rsa/errorhandler.php, cripto/rsa/mathloader.php, cripto/rsa/key.php, y cripto/rsa/keypair.php, así que creo que no quiero Symfony to Authoad Everything (es decir: no Autoload recursivamente), solo el archivo rsa.php. Sin embargo, las llamadas requerir_once son específicas de la carpeta que contiene la carpeta de cripta, lo que significa que el AutOload debe asegurarse de que cuando se cargue rsa.php, la cargue desde la ruta adecuada de modo que cada uno de esos archivos se pueda cargar correctamente.

Con esto en mente, probé algunas configuraciones diferentes sin suerte:

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

y:

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

Cada uno de estos nuevos intentos dio como resultado un error diferente mediante el cual la clase Crypt_RSA_Keypair simplemente no se encontró por completo.

Error fatal: Class 'crypt_rsa_keypair' no se encuentra en /app_path/lib/model/doctrine/sfdoctrineguardplugin/sfguarduser.class.php en línea 70

He intentado cavar a través de los documentos, pero la mayoría de mis búsquedas en Google apuntan a los documentos de Symfony para 1.0 en lugar de 1.4, y todos los documentos son generalmente vagos en los archivos de proveedores de autoengustación.

Supongo que otra opción sería requerir manualmente el archivo rsa.php que necesito, pero supongo que eso estaría rompiendo la convención Symfony, y probablemente hacer algo más difícil de lo debería ser también).

¿Fue útil?

Solución

Puede intentar crear su autocoader personalizado para el paquete de proveedores cripth_rsa y registrarlo en la configuración del proyecto, ya que ellos Presentado en la documentación de Jobeet (Cuando usa Zend Lucene).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top