Instalar PHP5 en Debian 9 Stretch

En esta entrada veremos como instalar PHP5 en Debian GNU / Linux 9 Stretch. El nuevo Debian Stretch trae por defecto solo el nuevo PHP7 pero muchas de las aplicaciones escritas en PHP deben ser bien probadas y ajustadas para la nueva versión de PHP.

Lo que haremos para lograr instalar PHP5 en Debian Stretch es agregar el repositorio de Debian Jessie con lo cual tendremos PHP5 y todas sus extensiones a las que seguramente estas acostumbrado si estas leyendo esta entrada.

Sigue leyendo

the requested PHP extension curl is missing from your system

root@BB8:/home/lenin# aptitude update Ign http://dl.google.com stable InRelease Ign http://linux.dropbox.com jessie InRelease Hit http://dl.google.com stable Release.gpg 27% [Esperando las cabeceras] [Esperando las cabeceras] [Esperando las cabecerasE: No se pudo encontrar el método /usr/lib/apt/methods/https.

El Problema

lenin@BB8:~/www/sistemayii2$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

Problem 1
– Installation request for linslin/yii2-curl 1.0.10 -> satisfiable by linslin/yii2-curl[1.0.10].
– linslin/yii2-curl 1.0.10 requires ext-curl * -> the requested PHP extension curl is missing from your system.

To enable extensions, verify that they are enabled in those .ini files:
– /etc/php5/cli/php.ini
– /etc/php5/cli/conf.d/05-opcache.ini
– /etc/php5/cli/conf.d/10-pdo.ini
– /etc/php5/cli/conf.d/20-gd.ini
– /etc/php5/cli/conf.d/20-json.ini
– /etc/php5/cli/conf.d/20-pdo_pgsql.ini
– /etc/php5/cli/conf.d/20-pgsql.ini
– /etc/php5/cli/conf.d/20-readline.ini
You can also run `php –ini` inside terminal to see which files are used by PHP in CLI mode.

 

La solución

Instalar el soporte para CURL de PHP

#aptitude install php5-curl

 

Generar PDF usando RML y TRML2PDF de Python desde PHP

rml php python reportlab rml2pdf

En esta entrada generaremos un archivo PDF desde PHP mediante la implementación libre de Tiny RML2PDF que convierte  Report Markup Language (RML) de ReportLab de Python en PDF. Para ello usaremos trml2pdf. Básicamente tendremos una interfaz web lograda con PHP la cual hará un llamado al terminal (consola) para invocar a trml2pdf para leer la plantilla RML y presentar de vuelta en la interfaz web el PDF generado. Sigue leyendo

Como generar archivos Excel desde Yii Framework

php excel yii

Con esta entrada usted sera capaz de generar hojas de calculo como archivos excel ó libreoffice, desde el Framework de PHP Yii. Para ello usaremos una extensión que integra PHPExcel a nuestro sistema en Yii.

– Instalar yii-phpexcel

Sigue leyendo

#Yii – Controlador desde Controlador

controlador-yii

En esta entrada practicaremos hacer llamados a controladores específicos y sus acciones, desde otros controladores en los que sea requerido.

La practica consiste en lo siguiente: Necesitamos desde un controlador ( PrincipalController.php ), usar acciones que se encuentran en otros dos controladores (OperacionesController.php y PublicoController.php respectivamente).

.

OperacionesController.php

<?php

class OperacionesController extends Controller{

public function actionSumar($a,$b){

if( is_null($a) && is_null($b) ){
$a= 6;
$b= 7;
}

$resultado = $a + $b;
if(!is_numeric($a) || !is_numeric($b))
throw new CHttpException(404,'Epa no es un dato numerico.');
else
return $resultado;

}

}

.

PublicoController.php

<?php

class PublicoController extends Controller{

public function actionCapturarVisitante($aleatorio){

$visitante = "<br> IP:{$_SERVER["REMOTE_ADDR"]}<br>";
$visitante .= "HOST:{$_SERVER["REMOTE_PORT"]}<br>";
$visitante .= "URI:{$_SERVER["REQUEST_URI"]}<br>";
$visitante .= "Fecha: ".date("d-m-Y h:i:s")."<br>";
$visitante .= "Navegador: {$_SERVER["HTTP_USER_AGENT"]}<br>";
$visitante .= "Identificador: {$aleatorio}<br><br>";

return $visitante;

}

}

.

PrincipalController.php

En este controlador usamos las acciones de los controladores anteriores. Al controlador OperacionesController.php y sus acciones accederemos indicando que nuestro controlador extiende del mismo (linea 3), recordando y entendiendo que al final de cuentas un controlador no es mas que una clase y sus acciones los métodos de esta clase (linea 7). Ahora las acciones del controlador PublicoController.php las capturaremos indicando: el controlador objetivo + la acción objetivo + los parámetros si los requiere como lo indica la linea 9.

<?php

class PrincipalController extends OperacionesController{

public function actionMivista(){

$suma = $this->actionSumar(11,3);

$visitante = PublicoController::actionCapturarVisitante(rand(10000,99999));

$this->render('mivista',
array( 'suma' => $suma, 'visitante' => $visitante ));
}

}

.

En el archivo protected/config/main.php especificar que se importaran todos los controladores agregando la siguiente linea en el bloque import: ‘application.controllers.*’

De lo contrario es probable que experimenten este tipo de errores:

include(OperacionesController.php): failed to open stream: No such file or directory

.

Vista generada desde PrincipalController.php

protected/views/principal/mivista.php

<h1>Controlador desde controlador en Yii</h1>

<b><?php echo 'El resultado de la suma es: '.$suma ?> </b>

<b><br /><br />Datos del visitante: </b><?php echo $visitante ?>

<div>
<?php echo CHtml::submitButton('Enviar'); ?>
</div>

Finalmente nuestra vista mostrara información que se genero y proceso desde tres controladores distintos.

controlador-yii

Vista en Yii usan en backend 3 controladores

Existen otros medios de realizar tareas iguales o similares, una u otra forma serán mas eficientes o mas acordes según el entorno, variables y las propias reglas de negocio que regulen su desarrollo en yii.

Lecturas muy recomendadas:

http://www.yiiframework.com/doc/guide/1.1/es/basics.controller

http://yiiframework.wordpress.com/2009/01/21/basico-modelo-vistas-y-controladoresmvc/

http://blog.jorgeivanmeza.com/2010/01/los-controladores-en-yii-2/

PHP5 + APC en Apache2 sobre Debian 7

debian-apache2-php5-apc

APC (Alternative PHP Cache) es un modulo de PHP que optimiza la ejecución de las aplicaciones desarrolladas en este lenguaje y minimiza en gran medida los tiempos de respuesta de los mismos, logrando asi mucho mejor rendimiento. Para una mejor concepción acerca de que es APC visite aqui ó aqui

Para instalarlo en Debian ó sus derivados:

#aptitude install php-apc

Luego agregar en  /etc/php5/conf.d/20-apc.ini

extension=apc.so
apc.enabled=1
apc.shm_size=256M
apc.ttl=3600
apc.user_ttl=7200
apc.gc_ttl=3600
apc.max_file_size=3M
apc.num_files_hint=10000
apc.user_entries_hint=10000

Ajustar segun su necesidad y recursos. Recordar reiniciar el servicio cada vez que haga cambios en su configuración: /etc/init.d/apache2 restart

Todas los parámetros y sus valores actuales los puede ver creando un archivo .php e imprimiendo la función phpinfo();

Para monitorear el modulo apc que acaba de instalar y configurar:

cp /usr/share/doc/php-apc/apc.php /var/www

y acceda: http://localhost/apc.php

debian-apache2-php5-apc

debian-apache2-php5-apc

Para acceder a la opción de menú que dice “User Cache Entries“, al principio del archivo apc.php  sustituya el password por defecto por el suyo:

defaults(‘ADMIN_PASSWORD’,’password’);      // Admin Password – CHANGE THIS TO ENABLE!!!

por

defaults(‘ADMIN_PASSWORD’,’s3cr3t4′);      // Admin Password – CHANGE THIS TO ENABLE!!!