Recently Posted

advertisement


Archivo para la categoría ‘PHP’ .


suPHP en Debian/Ubuntu

suPHP

suPHP es una herramienta para Apache2 que nos permite ejecutar scripts PHP con los privilegios del usuario que los crea en vez de con los permisos del usuario Apache de nuestro servidor, lo cual nos simplifica bastante el trabajo de tener que andar asignando permisos a nuestos ficheros.

En este documento se explicará como configurarlo en una distribución basada en Debian (por lo que también es válido para Ubuntu). Para tenerlo funcionando sólo debemos seguir los siguientes pasos:

-Nos logueamos en nuestro sistema como usuario root y desactivamos el módulo PHP5:

a2dismod php5
/etc/init.d/apache2 restart

-Luego instalamos los requisitos necesarios para poder poner suPHP:

apt-get install php5-cgi apache2-prefork-dev

-Ahora descargamos y compilamos el módulo suPHP:

wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install

-Añadimos suPHP a la configuración de Apache:

nano  /etc/apache2/httpd.conf

y añadimos la siguiente linea al fichero de configuración

LoadModule suphp_module       /usr/lib/apache2/modules/mod_suphp.so

-Por último reiniciamos Apache y ya tendremos listo nuestro servidor con suPHP :D .

/etc/init.d/apache2 restart

Traducido de Howtoforge.


Crear archivos zip con PHP

En esta ocasión veremos la forma de crear archivos comprimidos en formato ZIP. Para este ejemplo utilizaremos la clase zipfile escrita por Eric Mueller y muy bien explicada en Creating ZIP files with PHP.

Descargando la clase zipfile

Lo primero es descargar la clase zipfile desde zipfile.inc.txt y renombrarla a zipfile.php. Esta clase tiene dos metodos add_dir() y add_file() que permite agregar una carpeta o un archivo al zip que se esta creando.

Creando nuestro primer ZIP

Lo primero es incluir el archivo recién descargado, luego de ello creamos una instancia de la clase, para este ejemplo a la instancia lo llamamos $zipfile. Luego de ello agregamos un archivo de la siguiente forma.

  1. require (“zipfile.php”);

  2. $zipfile = new zipfile();

  3. $zipfile->add_file(implode(“”,file(“img01.jpg”)), “foto.jpg”);

Nótese que estamos agregando un archivo llamado img01.jpg y al momento de incluirlo en el zip lo estamos renombrando a foto.jpg. Hasta este punto hemos creado un archivo zip, el siguiente paso es enviarlo al cliente, para ello agregamos headers indicando el tipo de archivo y finalmente imprimimos el archivo:

  1. require (“zipfile.php”);

  2. $zipfile = new zipfile();

  3. $zipfile->add_file(implode(“”,file(“img01.jpg”)), “foto.jpg”);

  4.  

  5. header(“Content-type: application/octet-stream”);

  6. header(“Content-disposition: attachment; filename=zipfile.zip”);

  7. echo $zipfile->file();

El resultado del ejemplo lo pueden ver en http://samples.unijimpe.net/php-zip/.

Agregando carpetas al ZIP
En el caso que agregamos varios archivos y deseamos agruparlas en una carpeta, podemos utilizar el metodo add_folder. Luego de ello agregamos los archivos a la carpeta de la siguiente forma:

  1. require (“zipfile.php”);

  2. $zipfile = new zipfile();

  3. $zipfile->add_dir(“img/”);

  4. $zipfile->add_file(implode(“”,file(“img01.jpg”)), “img/01.jpg”);

  5. $zipfile->add_file(implode(“”,file(“img02.jpg”)), “img/02.jpg”);

  6. $zipfile->add_file(implode(“”,file(“img03.jpg”)), “img/03.jpg”);

  7.  

  8. header(“Content-type: application/octet-stream”);

  9. header(“Content-disposition: attachment; filename=fotos.zip”);

  10. echo $zipfile->file();

Como ven agregar carpetas y multiples archivos es muy sencillo, incluso se pueden renombrar los archivos al momento de agregarlos al archivo zip. El resultado de este ejemplo lo pueden ver en: http://samples.unijimpe.net/php-zip/zipfolder.php.

Leído en Unijimpe.


Cambiar la extensión de archivos PHP en nuestro servidor

Leo en Cristalab un útil manual que nos puede ayudar a proteger un poco nuestos archivos PHP del servidor.

Para ello necesitamos añadir una directiva en nuestro .htaccess o directamente en el archivo de configuración del servidor Apache.

Opción 1:

# Hacer que el codigo PHP parezca como otro tipo de codigo
AddType application/x-httpd-php .asp .py .pl

Opción 2 :
# Hacer que el codigo PHP parezca como de tipos desconocidos
AddType application/x-httpd-php .bop .foo .133t


Voz desde texto con PHP y Linux

En este artículo vamos a explicar una forma de generar un archivo de audio a partir de un texto determinado con Linux (en este caso Ubuntu) y PHP.

1.-Instalamos Festival, que es el programa con el cual vamos a generar el fichero de audio a partir del texto:

apt-get install festival

2.-Una vez instalado, dispondremos de la utilidad de línea de comando text2wave que funciona de la siguiente manera:

# text2wave archivo.txt -o archivo.wav 

Para no tener que crear un archivo de texto cada vez utilicemos el programa usaremos tuberias:

# echo "hola amigo" | text2wave -o archivo.wav 

El código PHP

Ahora nuestro servidor está listo para generar archivos de voz desde un texto, lo único que tenemos que hacer es llamar al comando text2voice desde PHP con la función exec:

<?php
exec ( 'echo "hola amigo" | text2wave -o file.wav' );
?>

Para que veais un ejemplo más complejo, voy a meterle un formulario y un enlace al archivo generado:
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', True );
if ( isset ( $_REQUEST['text'] ) ) {
$speechfile = "speech/".time().".wav";
$curDir = '/var/www/speech/';
exec ( 'echo "'. escapeshellarg ( utf8_decode ( $_REQUEST['text'] ) ) . '" | text2wave -o ' . $curDir . $speechfile );
?><p>El archivo generado se <a href="<?php
echo $speechfile;
?>">encuentra aquí</a></p><?php
}
?>
<form method="POST">
<textarea name="text" cols="70"></textarea><br />
<input type="submit">
</form>

Fuente original: ProgramacionWeb


Ficheros Excel con PHP (lectura)

Hay ocasiones en las que nos puede resultar muy útil leer ficheros Excel desde una aplicación, sobre todo en aquellos casos en los que los usuarios no tengan conocimientos sobre el manejo de bases de datos como MySQL.

En PHP la forma más cómoda de leer archivos Excel es utilizar PHP-ExcelReader, que es una clase capaz de leer ficheros Excel (.xls) sin utilizar objetos COM, lo que nos permite una mayor independencia en la plataforma del servidor.

Para utilizarla descargamos la librería y la incluimos dentro de las de la aplicación que estemos desarrollando, luego se usa de la siguiente forma:

include('reader.php');
$excel_reader = new Spreadsheet_Excel_Reader();
$excel_reader->read("archivo_excel.xls");

Mediante el código anterior los datos de archivo_excel.xls quedan cargados en un array PHP de 2 dimensiones:
$excel_reader->sheets[x][y];

X es el número de hoja del documento, mientras que Y puede tomar varios valores:
// Número de filas de la hoja
$excel_reader->sheets[0]['numRows'];
 
// Número de columnas de la hoja
$excel_reader->sheets[0]['numCols'];
 
// Acceso a los datos de celdas
$excel_reader->sheets[0]['cells'][3][4];
 
// Información sobre la celda
$excel_reader->sheets[0]['cellsInfo'][3][4]['raw'];
$excel_reader->sheets[0]['cellsInfo'][3][4]['type'];



[x] Cerrar
E-mail