Monoforms

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


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) [function.include]: 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_autoloadregister(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_autoloadregister(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/


...
Monoforms ©2021 Created by Pedro Rojas Reyes