SOLUCIONADO: 3w version 2.8 no puedo generarar archivo excel Permision dinied

Hola estuve analizando la forma en que genera el archivo excel .En root.php ingresa en esta opcion linea 79:
} else {
$this->FILEH = fopen($filename, “wb”);

segun entiendo trata de generar el archivo en el directorio en donde esta parado no en el temporal
si le pongo un : echo "entro ". getcwd() . “\n”;
me devuelve /usr/local/proyectos/g3w2/src/siu/www

En donde tengo que cambiar o configure mal. Para que genere en el temporal ?

Ya di los permisos a estas carpetas instalacion/log instalacion/cache instalacion/temp src/siu/www/js/escalas/

Pero me sigue tirando error de permiso paso el log:
clase: Exception
mensaje: Can’t open acta_examen.xls. It may be in use or protected.
traza: [TRAZA]

—[ 0 ]-----------------------------------------

  • function: PHPExcel_Shared_OLE_PPS_Root->save

  • file: /usr/local/proyectos/g3w2/src/siu/lib/phpExcel/PHPExcel/Shared/OLE/PPS/Root.php, linea 82

  • param:
    0: acta_examen.xls
    —[ 1 ]-----------------------------------------

  • function: PHPExcel_Writer_Excel5->save

  • file: /usr/local/proyectos/g3w2/src/siu/operaciones/_comun/operaciones/reporte/generador_excel.php, linea 88

  • param:
    0: acta_examen.xls
    —[ 2 ]-----------------------------------------

  • function: siu\operaciones_comun\operaciones\reporte\generador_excel->generar

  • file: /usr/local/proyectos/g3w2/src/siu/operaciones/acta_examenes/controlador.php, linea 179

—[ 3 ]-----------------------------------------

  • function: siu\operaciones\acta_examenes\controlador->accion__generar_xls_acta
  • file: /usr/local/proyectos/g3w2/src/siu/lib/kernel/nucleo/controlador.php, linea 405

—[ 4 ]-----------------------------------------

  • function: kernel\nucleo\controlador->invocar_accion

  • file: /usr/local/proyectos/g3w2/src/siu/lib/kernel/nucleo/controlador.php, linea 141

  • param:
    0: generar_xls_acta
    —[ 5 ]-----------------------------------------

  • function: kernel\nucleo\controlador->procesar_accion

  • file: /usr/local/proyectos/g3w2/src/siu/lib/kernel/nucleo/acceso_web.php, linea 108

—[ 6 ]-----------------------------------------

  • file: /usr/local/proyectos/g3w2/src/siu/lib/kernel/nucleo/acceso_web.php, linea 26

—[ 7 ]-----------------------------------------

  • function: kernel\nucleo\acceso_web::procesar
  • file: /usr/local/proyectos/g3w2/src/siu/www/index.php, linea 4

########################################################################################################################

================================================================================
================================= WARNINGS =================================
================================================================================

Atte
Felix

Hola Felix, estuvimos analizando el error.
Parece ser un tema de permisos.
Te solicito que me pases la información que te devuelve la ejecución del siguiente comando en la consola.
Debes estar parado en el directorio donde se encuentra el proyecto:

dir_proyecto/instalacion ls -la /temp

Gracias!, aguardo tu respuesta

Hola esto me tira el ls

root@guaranibackup:/usr/local/proyectos/g3w2/instalacion# ls -la temp
total 12
drwxr-sr-x 3 www-data www-data 4096 jun 5 09:22 .
drwxr-sr-x 6 root staff 4096 may 29 12:34 …
drwxr-sr-x 11 www-data www-data 4096 jun 5 09:23 des01

Felix

Hola Felix, te hago una consulta… ésto te pasa cuándo querés generar cualquier tipo de acta? o sólo para examenes?
Fijate si no tenés un archivo que se llame acta_examen.xls en la carpeta instalación/temp/des01, de ser así borralo. Puede ser que algún proceso que quedó ejecutando esté utilizando el archivo, por eso no te deje crearlo.
Avisame cuando corrobores eso y sino vemos como seguimos.
Gracias!

Hola Juliana
Si cuando genero cualquier cosa me pasa. Lo curioso es que probe poniendo en el root php que genere el archivo en /tmp/ o sea el temporal del raiz. Y lo genera al archivo solo que incompleto ya que parece q lo llama desde otro lado con otro path cuando completa el excel .

No hay ningun xls en el tmp de proyectos

Felix

Hola Felix, te pediría lo siguiente:

entra al archivo /src/siu/operaciones/_comun/operaciones/reporte/generador_excel.php, luego de la linea 83 agrega este código:

quedaría así:


function generar(){
$objWriter = new \PHPExcel_Writer_Excel5($this->planilla);
$nombre = $this->nombre_archivo.“.xls”;

	$path_nombre = kernel::proyecto()->get_dir_temp() ."/". $nombre;
            [b]klog2("path_excel", $path_nombre);
            klog2("file_exists", file_exists($path_nombre));
            $row = exec('ls -la '.kernel::proyecto()->get_dir_temp(),$output,$error);
            klog2("command", $output);
            $row = exec('whoami',$output2,$error);
            klog2("whoami", $output2);[/b]
	$objWriter->save($path_nombre);

lo que hay que agregar es lo que esta en negrita.

luego volve a intentar a generar el Excel y mándame el archivo de log que se genera (/instalacion/log/des01 el ultimo).

espero tu respuesta y el archivo de log. saludos.

Hola Leonel ahora si lo genera poniendo el codigo que tenes que en donde le indicas que cree en el temporal .
El codigo que tengo yo es este

	$objWriter = new \PHPExcel_Writer_Excel5($this->planilla);
	$nombre = $this->nombre_archivo.".xls";
	$objWriter->save($nombre);

	$contenido = file_get_contents($nombre);
	$longitud = filesize($nombre);
	unlink($nombre);

En ninguna parte se indica que genere en el temporal

Felix

Hola Felix, lo que te quise decir es que agregues el código que te puse en negrita, dicho código lo que hace es escribir información en el log de la aplicación que nos va a ayudar a saber cual es el problema.

por favor, agrega ese código, volve a intentar de generar el Excel y después pasame el ultimo archivo de log q se genera así yo puedo ver cual es el problema.

si hay algo q no entendiste pregúntame, saludos.

Hola Leonel el problema que tengo con el codigo que me enviaste es que no tengo definida la variable $path_nombre
Como ves en el codigo que te puso solo define $nombre

Felix

Hola Felix, que raro, yo estoy viendo un proyecto en la versión 2.8 y tengo un código distinto al tuyo, proba esto:

En el archivo /src/siu/operaciones/_comun/operaciones/reporte/generador_excel.php cambia la función generar por esta:

function generar(){
		$objWriter = new \PHPExcel_Writer_Excel5($this->planilla);
		$nombre = $this->nombre_archivo.".xls";
		
		$path_nombre = kernel::proyecto()->get_dir_temp() ."/". $nombre;
		$objWriter->save($path_nombre);
		$contenido = file_get_contents($path_nombre);
		$longitud = filesize($path_nombre);
		unlink($path_nombre);

		header("Cache-Control: private",false);
		header("Content-type: application/vnd.ms-excel");
		header("Content-Length: ".$longitud);
		header("Content-Disposition: attachment; filename=".$nombre);
		header("Content-Transfer-Encoding: binary");
		header("Pragma: no-cache");
		header("Expires: 0");
		echo $contenido;
	}

decime si con eso funciona, saludos.

Hola Leonel Listo solucionado con el codigo que enviaste . por lo otro ayer volvi a descargar del colab el g3w y sigue descargando ese codigo que te envie.

Gracias
Felix

Perfecto, eso que tuviste que enparchar ya esta solucionado a partir de la versión 2.8.1

saludos, Leo.