Pasar al contenido principal
Monoforms Web Development
CAPTCHA
8 + 4 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

Main navigation

  • Home
  • Sobre mi
  • Contacto
CAPTCHA
3 + 4 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.

Sobrescribir enlaces de ayuda a la navegación

  1. Home
  2. Failed To Open Stream: Include (PHPExcel_Shared_ZipStreamWrapper.php) En Yii-Framework y PHPExcel

Failed to open stream: include (PHPExcel_Shared_ZipStreamWrapper.php) en Yii-Framework y PHPExcel

By peter, 13 Junio, 2013

Tenemos varias aplicaciones que comparten extenciones para esto se creó un directorio compartido en el servidor.
Una de estas extenciones es la de PHPExcel la cual arroja un error al ser incluida a la aplicación.
En mi actiongenerarReporte puse lo siguiente:

  
    /* alias al path */ 
    Yii::setPathOfAlias('compartido','/home/apache/web/aplicacion/compartido'); /* importar la extención */ 
    Yii::import('compartido.extensions.classes.PHPExcel.PHPExcel'); 
  

Eso arroja el siguiente mensaje: include(PHPExcel_Shared_ZipStreamWrapper.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

Al parecer el autoload de PHPExcel no estaba cargando correctamente todos los archivos. En la wiki de yiiframework encontré como resolverlo:

 
   
     Yii::setPathOfAlias('compartido','/basecentral/apache/web/aplicacion/compartido'); 
     Yii::import('compartido.extensions.classes.PHPExcel.PHPExcel'); 
     spl_autoload_unregister(array('YiiBase', 'autoload')); 
     $phpExcelPath = Yii::getPathOfAlias('compartido.extensions.classes.PHPExcel'); 
     include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php'); spl_autoload_register(array('YiiBase', 'autoload')); 
    

Esto no lo queria hacer en cada acción de mi controlador asi que lo pusé en el metodo "beforeAction" quedando de la siguiente manera:

 
  
     protected function beforeAction ($action){ 
        Yii::setPathOfAlias('compartido','/basecentral/apache/web/aplicacion/compartido'); 
        Yii::import('compartido.extensions.classes.PHPExcel.PHPExcel'); 
        spl_autoload_unregister(array('YiiBase', 'autoload')); 
        $phpExcelPath = Yii::getPathOfAlias('compartido.extensions.classes.PHPExcel'); 
        include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php'); 
        spl_autoload_register(array('YiiBase', 'autoload')); 
        return parent::beforeAction($action); 
    } 
    

Y ya puedo usarlo en la acción donde  genero el excel.

 
   
    public function actiongenerarReporte ()
    { 
         $_xls = new PHPExcel(); 
         $_xls->getProperties()->setDescription($titulo); 
         $_xls->getProperties()->setTitle($titulo); 
    } 
  

Referencias: http://www.yiiframework.com/wiki/101/how-to-use-phpexcel-external-library-with-yii/

 

Comentarios

Contenido reciente

  • Como limpiar usings sin usar en Rider
  • Instalando apache, mysql y php en Ubuntu
  • Cómo liberé 12GB en mi servidor y reviví mi sitio web (sin llorar… mucho)
  • ¿Que son los sitios web agregadores y los anuncios clasificados?
  • Mi Experiencia con Docker, Podman y Kubernetes
  • Lo más destacado del AWS User Group Puebla
  • Docker: Ignorar el directorio vendor en un proyecto de Go.
  • Instala Kubernetes en Ubuntu 22.04 para pruebas
  • Serverless, Lambda y Kubernetes: Fundamentos para la nube
  • Ejecuta tu lambda de Golang en AWS SAM de forma local

Recomendados

  • Biodiv
  • Medium
RSS feed

Política de privacidad

Términos de uso

Recomendados

  • Biodiv
  • Medium
Powered by Drupal

Monoforms ©2021 Created by Pedro Rojas Reyes