downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PharData> <Phar::unlinkArchive
[edit] Last updated: Fri, 25 May 2012

view this page in

Phar::webPhar

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::webPharmapPhar para archivos phar basados en web. Controlador principal para aplicaciones web

Descripción

void Phar::webPhar ([ string $alias [, string $index = "index.php" [, string $f404 [, array $mimetypes [, array $rewrites ]]]]] )

Phar::mapPhar() para archivos phar basados en web. Este método procesa $_SERVER['REQUEST_URI'] y direcciona una petición de un navegador web a un fichero interno dentro de un archivo phar. En esencia, simula un servidor web, direccionando las peticiones al fichero correcto, enviando las cabeceras correctas y procesando ficheros PHP según sea necesario. Este poderoso método es parte de lo que hace sencillo convertir una apliación PHP existene en un archivo phar. Combinado con Phar::mungServer() y Phar::interceptFileFuncs(), cualquier aplicación web se puede utilizar sin modificaciones desde un archivo phar.

Phar::webPhar() debería llamarse solamente desde la rutina de interoperabilidad (stub) de un archivo phar (aquí hay más información de lo que es una rutina de interorperabilidad).

Parámetros

alias

El alias que puede usarse en las URL phar:// para referirse a este archivo, en vez de su ruta completa.

index

La ubicación dentro del phar del índice de directorios.

f404

La ubicación del script a ejecutar cuando no se encuentra el fichero. Este script debería mostrar las cabeceras HTTP 404 apropiadas.

mimetypes

Un array que mapea extensiones de fichero adicionales a tipos de MIME. Si el mapeo predeterminado es suficiente, se ha de pasar un array vacío. Por omisión, estas extensiones son mapeadas a estos tipos de MIME:

<?php
$mimes 
= array(
    
'phps' => Phar::PHPS// pasa a highlight_file()
    
'c' => 'text/plain',
    
'cc' => 'text/plain',
    
'cpp' => 'text/plain',
    
'c++' => 'text/plain',
    
'dtd' => 'text/plain',
    
'h' => 'text/plain',
    
'log' => 'text/plain',
    
'rng' => 'text/plain',
    
'txt' => 'text/plain',
    
'xsd' => 'text/plain',
    
'php' => Phar::PHP// procesado como PHP
    
'inc' => Phar::PHP// procesado como PHP
    
'avi' => 'video/avi',
    
'bmp' => 'image/bmp',
    
'css' => 'text/css',
    
'gif' => 'image/gif',
    
'htm' => 'text/html',
    
'html' => 'text/html',
    
'htmls' => 'text/html',
    
'ico' => 'image/x-ico',
    
'jpe' => 'image/jpeg',
    
'jpg' => 'image/jpeg',
    
'jpeg' => 'image/jpeg',
    
'js' => 'application/x-javascript',
    
'midi' => 'audio/midi',
    
'mid' => 'audio/midi',
    
'mod' => 'audio/mod',
    
'mov' => 'movie/quicktime',
    
'mp3' => 'audio/mp3',
    
'mpg' => 'video/mpeg',
    
'mpeg' => 'video/mpeg',
    
'pdf' => 'application/pdf',
    
'png' => 'image/png',
    
'swf' => 'application/shockwave-flash',
    
'tif' => 'image/tiff',
    
'tiff' => 'image/tiff',
    
'wav' => 'audio/wav',
    
'xbm' => 'image/xbm',
    
'xml' => 'text/xml',
);
?>

rewrites

Un array que mapea URI al fichero interno, simulando la directiva mod_rewrite de apache. Por ejemplo:

<?php
array(
    
'mi_info' => 'mi_info.php'
);
?>
direccionaría las llamadas a http://<host>/miphar.phar/mi_info al fichero phar:///path/to/miphar.phar/mi_info.php, conservando GET/POST. Eso no funciona completamente como mod_rewrite, ya que no coincidiría con http://<host>/miphar.phar/mi_info/otro.

Valores devueltos

No devuelve ningún valor.

Errores/Excepciones

Lanza una excepción de tipo PharException cuando no se puede abrir el fichero interno para salida, o si se llama desde un lugar que no sea una rutina de interoperabilidad. Si se pasa un array no válido a mimetypes o a rewrites, se lanza una excepción de tipo UnexpectedValueException.

Ejemplos

Ejemplo #1 Un ejemplo de Phar::webPhar()

Con el ejemplo siguiente, el phar creado mostrará Hola Mundo si uno explora /miphar.phar/index.php o /miphar.phar, y mostrará la fuente de index.phps si uno explora /miphar.phar/index.phps.

<?php
// creating the phar archive:
try {
    
$phar = new Phar('miphar.phar');
    
$phar['index.php'] = '<?php echo "Hola Mundo"; ?>';
    
$phar['index.phps'] = '<?php echo "Hola Mundo"; ?>';
    
$phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>'
);
} catch (
Exception $e) {
    
// manejar errores
}
?>

Ver también

  • Phar::mungServer() - Definir una lista de hasta 4 variables $_SERVER que debería ser modificadas para la ejecución
  • Phar::interceptFileFuncs() - Ordenar a phar interceptar fopen, file_get_contents, opendir, y todas las funciones relacionadas con estadísticas



add a note add a note User Contributed Notes Phar::webPhar
Mike O&#39;Malley 06-Oct-2009 04:18
It appears that the $rewrites parameter is a callback not an array. The implementation seems to be more in tune with this note http://www.mail-archive.com/internals@lists.php.net/msg33627.html , although, I was unable to figure out when or if a parameter gets passed to that function. I implemented it as follows:

<?php
$phar_name
= 'mysite.phar';
function
phar_rewrites()
{
 
$r = $_SERVER['REQUEST_URI'];
  if (
file_exists("phar://$phar_name$r")) return $r;
  else return
'index.php';
}
$phar = new Phar();
/*
 * do stuff to set up phar
 */
$phar->webPhar($phar_name, 'index.php', '404.php', $mimes, 'phar_rewrites');
?>

The above implementation will also stop the phar from sending out a 301 redirect to the index file when you rewrite (in apache) all requests to the phar.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites