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!!!

Entendiendo Yii

entendiendo-yii

Yii – Yes, it is

Un framework es un conjunto de código, librerías y componentes de software probados, optimizados para facilitar y agilizar el desarrollo de aplicaciones, basado en las mejores prácticas de desarrollo, que permitirán trabajar de forma uniforme, organizada y con la mayor cálidad posible. Normalmente cuentan con documentación, una comunidad organizada que constantemente esta trabajando y luchando por su constante desarrollo y mantenimiento. Los frameworks tienen la intención de enfocar el trabajo de programación a las áreas que realmente agregaran un valor al negocio y que supondrán la esencia de la aplicación que se construirá, por ello intenta restarle trabajo a los programadores en áreas mas triviales a estas alturas como la validación de campos, operaciones de consultar, insertar, modificar y eliminar por decir algunos ejemplos.

entendiendo-yii

Yii es un framework de desarrollo de alto rendimiento, muy flexible y versátil, escrito en PHP5 para el desarrollo rápido de aplicaciones web. Yii es software libre liberado bajo una licencia BSD, y tiene la concepción de hacer las cosas de manera sencilla, elegante y rápidas, ayudando con esto a construir aplicaciones eficientes, que fácilmente pueden ser mantenidas y escaladas.

Yii le presenta al programador un código fuente limpio, sencillo y entendible que roza con lo intuitivo de como que hace cada trozo de código y que significa cada elemento.

Yii es una opción idónea para desarrollos de sistemas pequeños hasta para desarrollos de grandes aplicaciones que necesiten garantizar la disponibilidad de la misma.

Yii es un acrónimo de Yes, it is! proveniente de la respuesta que el proyecto Yii le da a los que por primera vez se plantean si adoptar su uso:

Is it fast? … Is it secure? … Is it professional? … Is it right for my next project? … Yes, it is!

¿Es rápido? … ¿Es seguro? … ¿Es profesional? … ¿Es lo que necesito para mi próximo proyecto? … Sí, lo es!

Algunos otros frameworks existentes:

– Symfony (PHP) – symfony.com
– CakePHP (PHP) – cakephp.org
– CodeIgniter (PHP) – codeigniter.com
– Ruby on Rails (Ruby) – rubyonrails.org
– Catalyst (Perl) – catalystframework.org
– Django (Python) – djangoproject.com

Por que escoger Yii

Yii es un framework genérico de programación Web que puede ser utilizado para todo tipo de aplicaciones Web. Gracias a que es liviano de correr y está equipado con soluciones de cacheo sofisticadas, es adecuado desde para desarrollar aplicaciones de gran tráfico como portales, foros, CMS, e-commerce, etc… Hasta para desarrollar aplicaciones de mayor complejidad que necesiten  interconexión y interoperabilidad de sistemas, bases de datos, webservices,  etc…

– Rápido

Yii sólo carga las características que usted necesita. Tiene excelente y poderoso soporte de caché. Esta explícitamente diseñado para trabajar eficientemente con AJAX.

Yii es mucho más rápido, ya que utiliza la técnica de carga diferida ampliamente, es decir se carga, interpreta o procesa contra demanda únicamente lo que se solicita,  Por ejemplo, no se incluye un archivo de clase hasta que la clase se utiliza por primera vez, y no se crea un objeto hasta que el objeto se accede por primera vez. Otros frameworks sufren mucho el impacto del rendimiento, ya que permiten una funcionalidad (por ejemplo, conexión DB, sesión de usuario, etc…) independientemente de que se usen o no durante una petición.

– Seguro

La seguridad es un estándar en Yii. Éste incluye la validación de entradas, filtrado de salidas, prevención de inyección SQL y Cross-site scripting.

Yii está equipado con medidas de seguridad para ayudar a proteger sus aplicaciones web de ataques como inyección SQL, cross-site scripting (XSS), cross-site request forgery (CSRF), y de  manipulación de cookies (Cookie Tampering).

– Profesional

Yii le ayuda a desarrollar un código limpio y reutilizable. Sigue el patrón MVC, lo que garantiza una clara separación de la lógica del negocio y la presentación. Fomenta la sinergia en equipos de desarrollo y promueve activamente métodos ágiles de trabajo que son ideales para combinar con metodologías como SCRUM o XP

Sigue leyendo