[SOLUCIONADO] Uso de librerías (vendors)

Hola. Estoy tratando de usar una librería que no existe, que no viene desde el SIU.

La agregué en: src/pers/cordoba/lib
La consulta viene de como llamarla desde la operación: certificado_programas. Se probó muchas rutas, pero ninguna con éxito. Se creó concat_pdf.php y se usa en controlador.php.

Subo todo al colab.

Saludos

Hola, en src/pers/cordoba/operaciones/certificado_programas/concat_pdf.php como estas dentro de un namespace al extender la clase tenes que hacerlo así:


class concat_pdf extends \FPDI {

también esta mal el require, tenes que subir dos niveles en la estructura de archivos:


require_once('../../lib/fpdi.php');

si con estos cambios no funciona por favor envíame el error que te muestra.

saludos.

Ok gracias. Saludos

De nada, funciono la solución al final?

saludos.

No, no anduvo.
Quedo así:

<?php
namespace cordoba\operaciones\certificado_programas;

//use cordoba\operaciones\fpdi\FPDI;
require_once('../../lib/fpdi.php');

class concat_pdf extends \FPDI {
var $files = array();
	
	function setFiles($files) {
	$this->files = $files;
	}
	function concat() {
	foreach($this->files AS $file) {
	$pagecount = $this->setSourceFile($file);
	for ($i = 1; $i <= $pagecount; $i++) {
	$tplidx = $this->ImportPage($i);
	$s = $this->getTemplatesize($tplidx);
	$this->AddPage('P', array($s['w'], $s['h']));
	$this->useTemplate($tplidx);
			}		
		}
	}
}//cierro concat pdf
		
?>

y el error en la pág es: Error del servidor. 500
Y en el log:


[Fri Nov 13 16:57:12 2015] [error] [client 172.16.248.204] PHP Fatal error:  require_once(): Failed opening required '../../lib/fpdi.php' (include_path='.:/usr/share/php:/usr/share/pear:.:/srv/www/vhosts/guarani_291/src/siu/lib') in /srv/www/vhosts/guarani_291/src/pers/cordoba/operaciones/certificado_programas/concat_pdf.php on line 5, referer: http://www.prueba28.guarani.unc.edu.ar/prueba291/certificado_programas

Hola, proba con esto otro:

require_once(dirname(__FILE__).'/../../lib/fpdi.php');

luego te vas a encontrar con el problema de que faltan las librerías: fpdf_tpl.php, fpdi_pdf_parser.php y fpdi2tcpdf_bridge.php, las cuales no están.

saludos.

Mejor reemplazalo por:


require_once(bootstrap::get_dir_raiz().'/src/pers/cordoba/lib/fpdi.php');

y agrega el use siu\bootstrap; arriba de todo en el archivo que hagas el require_once.

saludos.

Seguimos la sugerencia de Andrés Blanco, y anduvo.
La comento por si a alguien le pasa lo mismo:

Hola, intentá incluir la librería a través de composer. 1 - creá el archivo composer.json en la raíz del proyecto 2 - agregá como require la librería que necesitás. https://github.com/clegginabox/pdf-merger ahí hay instrucciones 3 - ejecutá composer update. Esto te crea la carpeta vendor y meta las deps adentro 4 - Donde quieras utilizaar la lib hacé un require __DIR__ . '/vendor/autoload.php'; siempre teniendo en cuenta de armar el path relativo correctamente. 5 - Si todo está bien podrías utilizar la librería haciendo: $pdf = new \Clegginabox\PDFMerger\PDFMerger;

Saludos y gracias.
Andrea