Pregunta

Estoy corriendo una aplicación web bajo plackup con starman y tratando de cargar dinámicamente y crear instancias de paquetes basados en las solicitudes del usuario.Estoy usando 'requieren $nombrepaquete;' para cargar el paquete en $packageName contiene el nombre del paquete, los nombres se almacenan en un archivo de configuración.Yo, a continuación, ejecutar un conocido conjunto de comandos en la instancia como todas las clases heredan de una clase base y contienen un conjunto de métodos conocidos.

Esto funciona muy bien en Apache, pero por alguna razón plackup está diciendo que no puede encontrar el paquete aunque @INC contiene la ruta de la biblioteca y los nombres de los paquetes son absolutos desde el último directorio en el lib camino.Es decir, el nombre del paquete sería la Base::Mi::Paquete.

Cualquier persona que experimente este problema?Necesito actualizar alguna otra ruta de acceso dentro de Starman?Yo soy la ejecución de plackup con el parámetro-I, así como la actualización de mi entorno PERL5LIB variable.También probé 'use lib /...' en la aplicación principal de la clase, pero ninguno de estos trabajos.

Gracias

¿Fue útil?

Solución

require Solo aceptará nombres de módulos (por ejemplo, Scalar :: Util) cuando se especifican como palabras desnudas. Si das require una cadena, entonces debe ser una ruta relativa al módulo (por ejemplo, Scalar/Util.pm). Puedes evitar esto haciendo el require dentro de un eval (la forma de parámetro de cadena de eval), p.ej eval "require $package".

Ver Verifique la lista del módulo instalado en la máquina

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