Compilar PHP5 con soporte Data Objects (PDO)
El carrito de compra de ejemplo está alojado en un hosting gratuito sin publicidad 3 base de datos mysql, etc.. y este es el enlace que te envía a la página de registro 00webhost.com
Después de realizar un ejercicio carrito de compra propuesto por Ricardo Gutierréz (programador PHP), un mensaje de error alerta que el objeto PDO no se encuentra al ejecutar uno de los archivos en mi servidor apache local. El ejercicio lo he subido al servidor gratuito 00webhost.com, desactivado, por supuesto, el pago por paypal. El código y video está disponible en vimeo. Carrito compra funcionando
Por defecto al compilar php5 (Gentoo) pdo viene desactivado:
# emerge -av php
[ebuild R ] dev-lang/php-5.3.10 USE="apache2 berkdb bzip2 cgi cli crypt ctype exif fileinfo filter fpm gd gdbm hash iconv ipv6 json ldap mysql nls phar posix postgres readline session simplexml spell sqlite ssl tokenizer truetype unicode xml zlib -bcmath -calendar -cdb -cjk -curl -curlwrappers -debug -doc -embed -enchant -firebird -flatfile (-frontbase) -ftp -gmp -imap -inifile -intl -pdo -iodbc -kerberos -kolab -ldap-sasl -libedit -mhash -mssql -mysqli -mysqlnd -oci8-instant-client -odbc -pcntl -pic -qdbm -recode -sharedmem -snmp -soap -sockets -sqlite3 -suhosin (-sybase-ct) -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -zip"
Agregamos al archivo /etc/portage/package.use lo siguiente:
# vi /etc/portage/package.use
=dev-lang/php-5.3.10 apache2 berkdb bzip2 cgi cli crypt ctype exif fileinfo filter fpm gd g dbm hash iconv ipv6 json ldap mysql nls phar posix postgres readline session simplexml spel l sqlite ssl tokenizer truetype unicode xml zlib pdo -bcmath -calendar -cdb -cjk -curl* -cu rlwrappers* -debug -doc -embed -enchant -firebird -flatfile (-frontbase) -ftp* -gmp -imap - inifile -intl -iodbc -kerberos -kolab -ldap-sasl -libedit -mhash -mssql -mysqli* -mysqlnd - oci8-instant-client -odbc -pcntl -pic -qdbm -recode -sharedmem -snmp -soap -sockets -sqlite 3 -suhosin (-sybase-ct) -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -x sl -zip (-adabas%) (-birdstep%) (-db2%) (-dbmaker%) (-empress%) (-empress-bcs%) (-esoob%) ( -gd-external%) (-interbase%) (-oci8%) (-sapdb%) (-sharedext%) (-solid%)
:wq
Nuestro sistema está preparado para recompilar php con pdo enable:
Calculating dependencies... done!
[ebuild R ] dev-lang/php-5.3.10 USE="apache2 berkdb bzip2 cgi cli crypt ctype exif fileinfo filter fpm gd gdbm hash iconv ipv6 json ldap mysql nls pdo phar posix postgres readline session simplexml spell sqlite ssl tokenizer truetype unicode xml zlib -bcmath -calendar -cdb -cjk -curl -curlwrappers -debug -doc -embed -enchant -firebird -flatfile (-frontbase) -ftp -gmp -imap -inifile -intl -iodbc -kerberos -kolab -ldap-sasl -libedit -mhash -mssql -mysqli -mysqlnd -oci8-instant-client -odbc -pcntl -pic -qdbm -recode -sharedmem -snmp -soap -sockets -sqlite3 -suhosin (-sybase-ct) -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -zip" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
Would you like to merge these packages? [Yes/No] y
Al finalizar la compilación un mensaje informa de que deben actualizarse algunos archivos de configuración del sistema. Una de las herramientas utilzadas para ello es update-etc:
Reiniciar apache:
# /etc/init.d/apache2 restart
* Stopping apache2 ... [ ok ]
* Starting apache2 ... [ ok
Linux es genial!.
freebsd, unix, openbsd, servidores, bsd, redes, linux, mikrotik, synology, zfs,
Páginas
martes, 24 de abril de 2012
domingo, 22 de abril de 2012
SSH
SSH (Secure Shell) se refiere al protocolo de red y las herramientas que dispone un administrador con la habilidad de iniciar sesion en un dispositivo remoto, remota ejecución, copia remota, etc.
SSH y las herramientas del paquete SSH - ssh, slogin, scp, y sftp - han remplazado las herramientas Unix rsh, rlogin, rcp, y telnet. Cada uno de esos comandos ejecuta un shell sobre el host remoto y permite al ususario llamar comandos. Como cada cliente necesita una cuenta de usuario en el host donde se ejecutan los comandos, todos los comandos mencionados también realizan autenticación.
El paquete SSH incluye ssh-keygen, ssh-agent, y ssh-add para apoyar la autenticación.
SSH interactiva
Después de abrir una SSH conexión y haber tecleado su password de usuario en el host remoto SSH remitirá la totalidad de su teclado al host remoto.
ssh -l carlos centos5.zapto.org
Para obtener una lista de los comandos soportados ~?
Listar las conexiones SSH abiertas ~#
Copiar archivos con scp:
Copiar todos los directorios y su contenido de un cliente FreeBSD a un servidor OpenBSD:
En el servidor (192.168.3.1) crear el directorio
obsd$ mkdir /home/carles/freebsd-client
Realizar la copia desde el cliente:
bsd$ scp -r /usr/home/carles/* carles@192.168.3.1:/home/carles/freebsd-client
$ scp -r /usr/home/carles/* carles@192.168.3.1:/home/carles/freebsd-client
Copiar archivo pf.conf desde el servidor con IP 192.168.3.1 (no olvide el punto final)
$ mkdir soekris
$ cd soekris
$ scp carles@192.168.3.1:/etc/pf.conf .
El comando scp de SSH permite copiar archivos. man scp permite conocer la sintaxis completa.
scp file1 usuario@host:file2
Ejemplo:
scp archivo1 carlos@centos5.zapto.org:archivo2
Para copiar en dirección contraria.
scp carlos@centos5.zapto.org:archivo1 archivo3
Para copiar por directorios recursivamente se utiliza el flag -r
Sshfs
Como SSH autentica y encripta todo dato a transferir es -util para transferir con seguridad datos a través de Internet. Sshfs permite a un usuario sin privilegios la habilidad de montar un remoto sistema de ficheros utilizando SSH, sin embargo esta técnica no requiere del módulo FUSE (Filesystem in Userspace) en el lado cliente. En el lado del servidor sshfs solo necesita un servidor SSH con un sub-sistema SFTP. Si instala en el lado cliente el paquete sshfs su gestor de paquetes instala fuse-utils y lib-fuse2.
La sintaxis para sshfs es como sigue:
sshfs user_name@host:path puntomontaje-local [optiones]
Ejemplo:
mkdir /mnt/remoto
sshfs carlos@centos5.zapto.org:/home/carlos /mnt/remoto
Algunos gestores de archivos pueden usarse en una conexión SSH para acceder al sistema de ficheros de un host remoto.
Nautilus (Gnome) soporta el protocolo SSH. El administrador solo necesita teclear la dirección requerida como una URL en la barra de direcciones:
ssh://hostnombre/path
La barra de direcciones no se muestra por defecto pero presionando ctrl + L se activa o desde la barra de herramientas --> Ir --> ubicación.
Utilizar compresión
SSH suporta compresión. Comprimir la comunicación entre ssh y sshd implica una sobrecarga en ambos extremos que se ve compensado transfiriendo solo el 50 por ciento de los paquetes.
Es posible activar permanentemente la compresión en el lado servidor utilizando compression yes en el archivo de configuración /etc/ssh/sshd_config. De la misma manera para hacer permanente la compresión en el lado cliente:
compression yes en el archivo $HOME/.ssh/config. Habilitar la transmisión comprimida temporalmente pasa por usar la opción -C en la conexión encriptada.
Info:
OpenSSH http://openssh.org
FUSE http://fuse.sourceforge.net
Linux Magazine
Linux es genial!.
miércoles, 28 de marzo de 2012
Novell LPIC Certificaciones
LPIC-1
LPI ID: LPI000221344
Certificación Novell NCLA ECR
Certificación Novell DTCS ECR
Linux es genial!.
jueves, 15 de marzo de 2012
Actualizar gcc 4.6.2
Instalando gcc-4.6.2 en mi gentoo amd64 para añadir soporte de optimizaciones para nuevos procesadores en mi caso AMD-FX-4100 Bulldozer (family 14), flags -march=btver1 -mtune=btver1
En estos momentos el paquete
aparece boqueado por missing keyword. Desmascarar (unmask) como
sigue:
# echo "sys-devel/gcc">>
/etc/portage/package.unmask
# echo "sys-devel/gcc **>>
/etc/portage/package.keywords
De momento he enmascarado las
anteriores versiones de gcc:
# vi /etc/package.mask
>sys-devel/gcc-4.5.3-r2
=sys-devel/gcc-4.5.3-r2
=sys-devel/gcc-4.5.3-r1
=sys-devel/gcc-4.4.6-r1
=sys-devel/gcc-4.4.5
=sys-devel/gcc-4.4.4-r2
=sys-devel/gcc-4.3.3-r1
=sys-devel/gcc-4.3.6-r1
=sys-devel/gcc-4.3.4
=sys-devel/gcc-4.1.2
=sys-devel/gcc-3.4.6-r2
Hago un emerge:
# emerge -av gcc
These are the packages that would be
merged, in order:
Calculating dependencies... done!
[ebuild NS #] sys-devel/gcc-4.6.2
[4.5.3-r2] USE="cxx fortran gtk mudflap (multilib) nls nptl
openmp (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -go
-graphite (-hardened) (-libffi) (-libssp) -multislot -nocxx -nopie
-nossp -objc -objc++ -objc-gc -test -vanilla" 0 kB
Total: 1 package (1 in new slot), Size
of downloads: 0 kB
Would you like to merge these packages?
[Yes/No]
y
# Modificar la version del compilador:
# gcc-config -l
[1] x86_64-pc-linux-gnu-4.5.3 *
[2] x86_64-pc-linux-gnu-4.6.2
# gcc-config 2
# env-update && source
/etc/profile
Reconstruir libtool:
# emerge --oneshot libtool
Solo es necesario si se actualiza desde una version anterior a 4.1:
# revdep-rebuild --library
libstdc++.so.5
# gcc-config -l
[1] x86_64-pc-linux-gnu-4.5.3
[2] x86_64-pc-linux-gnu-4.6.2 *
Agregar las flags al fichero make.conf
# vi /etc/make.conf
CFLAGS="-O2 -pipe
-fomit-frame-pointer -march=bdver1 -mtune=bdver1 -mcx16 -msahf -maes
-mpclmul -mpopcnt -mabm -mlwp -mavx"
CXXFLAGS="${CFLAGS}"
Continuará...
Linux es genial!.
miércoles, 15 de febrero de 2012
Procedimientos almacenados MySQL
Siguiendo los videotutoriales de Cesar Cancino PHP MySQL orientado a objetos, concretamente el número 16, me encontré con algunos errores al intentar crear procedimientos desde la consola. Todo debido a que simplemente es necesario cambiar el delimitador y así evitar confundir a mysql con el punto y coma (;). Como siempre desde nuestro querido Gentoo con toda la potencia de la consola Linux.
A proposito he adquirido una placa base gigabyte 970-ud3, un procesador bulldozer FX-1400 (4 nucleos), 8 gb de memoria ram a 1600, ventilador cpu katana III y he comprobado que puedo arrancar mi gentoo, debian y ubuntu (he sacado el disco duro del portatil (dell inspiron 1525 procesador dual core T5750 2.0Gb) lo he conectado al pc de sobremesa nuevo y arrancan sin ningun problema, solo he tenido que instalar los drivers de la tarjeta ethernet en gentoo. De todas maneras las CFLAGS AMD Bulldozer FX-8xxx/6xxx/4xxx (4, 6 y 8 procesadores) son:
CFLAGS="-O2 -pipe -fomit-frame-pointer -march=bdver1 -mtune=bdver1 -mcx16 -msahf -maes \
-mpclmul -mpopcnt -mabm -mlwp -mavx"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
Pero, las march=bdver1 o mtune=bdver1 solo es soportada por la versión del compilador GCC v.4.6.2 y superior. Imagínese su instalación linux de hace 3 o 4 años configurada de acuerdo a sus necesidades y poder utilizarla en otro ordenador más reciente sin tener que reinstalarlo todo?. Desde luego, quién da más!. Evidentemente, tendría que hacer algunos cambios, como el tipo de procesador, la plataforma (AMD), las Cflags de compilación, los drivers de la tarjeta gráfica, etc, pero no hace falta porque no es definitivo. El kernel de ubuntu es un 3.0 y el de Gentoo es el 2.6.39-gentoo-r3. Debido a la sensible disminución del tiempo compilación (debido a la potencia de la nueva máquina), en los proximos dias realizaré la instalación desde cero. Lo que no se es si utilizaré la versión 4.6.2 del compilador GCC.
carlos@hypatia ~ $ mysql -u root -p
mysql> create database trabajo_sp;
mysql> use trabajo_sp;
mysql> create table ninos (id_nino int not null auto_increment primary key,
nombre varchar(100), edad varchar(10)
);
mysql> create table adultos (id_adulto int not null auto_increment primary key,
nombre varchar (100),
edad varchar (100)
);
mysql> show tables;
+----------------------+
| Tables_in_trabajo_sp |
+----------------------+
| adultos |
| ninos |
+----------------------+
2 rows in set (0.00 sec)
Introducimos algunos valores a la tabla ninos:
mysql> insert into ninos values(null,'Rosa Salazar','29');
mysql> insert into ninos values(null,'Carlos Camilo','44');
mysql> call listar_ninos();
+---------+---------------+------+
| id_nino | nombre | edad |
+---------+---------------+------+
| 1 | Rosa Salazar | 29 |
| 2 | Carlos Camilo | 44 |
+---------+---------------+------+
3 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
El delimitador lo cambiamos para no confundir con el ;
mysql> delimiter //
mysql> create procedure introducir_persona
(in nombre varchar(100), in edad varchar(10))
begin
if edad < 18 then
insert into ninos values(null,nombre,edad);
else
insert into adultos values(null,nombre,edad);
end //
mysql> create procedure listar_adultos()
begin
select * from adultos;
end //
mysql> create procedure listar_ninos()
begin
select * from ninos;
end //
Despues de crear los procedimientos cambio el delimitador:
mysql> delimiter ;
Utilizando la palabra reservada call llamo el procedimiento:
mysql> call introducir_persona('Jesus Conde','45');
Como es mayor de 18 años ha sido insertado en la tabla adultos:
mysql> call listar_adultos();
+-----------+-------------+------+
| id_adulto | nombre | edad |
+-----------+-------------+------+
| 1 | Jesus Conde | 45 |
+-----------+-------------+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> call listar_ninos();
+---------+---------------+------+
| id_nino | nombre | edad |
+---------+---------------+------+
| 1 | Sonia Salazar | 29 |
| 2 | Carlos Camilo | 44 |
+---------+---------------+------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> call introducir_persona('Cesar Cancino', '32');
Query OK, 1 row affected (0.00 sec)
mysql> call listar_adultos();
+-----------+---------------+------+
| id_adulto | nombre | edad |
+-----------+---------------+------+
| 1 | Jesus Conde | 45 |
| 2 | Cesar Cancino | 32 |
+-----------+---------------+------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> call introducir_persona('Julia Garcia', '88');
Query OK, 1 row affected (0.00 sec)
mysql> call listar_adultos();
+-----------+---------------+------+
| id_adulto | nombre | edad |
+-----------+---------------+------+
| 1 | Jesus Conde | 45 |
| 2 | Cesar Cancino | 32 |
| 3 | Julia Garcia | 88 |
+-----------+---------------+------+
3 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> call introducir_persona('Susi Alie', '17');
mysql> call introducir_persona('Eduardo Garzon', '10');
Query OK, 1 row affected (0.00 sec)
mysql> call listar_ninos();
+---------+----------------+------+
| id_nino | nombre | edad |
+---------+----------------+------+
| 1 | Rosa Salazar | 29 |
| 2 | Carlos Camilo | 44 |
| 3 | Susi Alie | 17 |
| 4 | Eduardo Garzon | 10 |
+---------+----------------+------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Linux es genial!.
Suscribirse a:
Entradas (Atom)












.png)

