(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::webPhar — Redirige una solicitud desde un navegador web a un fichero interno en el archivo phar
$alias
= null
,$index
= null
,$fileNotFoundScript
= null
,$mimeTypes
= [],$rewrite
= null
Phar::webPhar() actúa como Phar::mapPhar() para los phars orientados a web. Este método analiza $_SERVER['REQUEST_URI'] y enruta las solicitudes de un navegador hacia un fichero interno del archivo. Esto simula un servidor web, enrutando solicitudes al fichero correcto, enviando los encabezados adecuados y analizando el fichero PHP como corresponde. Combinado con Phar::mungServer() y Phar::interceptFileFuncs(), cualquier aplicación web puede ser utilizada sin cambios a partir del archivo phar.
Phar::webPhar() debe ser llamado únicamente desde el contenedor de carga de un archivo phar (consultar esto para obtener más información sobre los contenedores).
alias
El alias que puede ser utilizado en la URL
phar://
para referirse
al archivo, en lugar de su ruta completa.
index
La ubicación dentro del archivo del índice de directorio.
fileNotFoundScript
La ubicación del script a ejecutar cuando un fichero no es encontrado. Este script debe enviar los encabezados HTTP 404 correctos.
mimeTypes
Un array que hace corresponder extensiones de fichero adicionales a tipos MIME. Si las correspondencias por defecto son suficientes, se debe pasar un array vacío. Por defecto, estas correspondencias son las siguientes:
<?php
$mimes = array(
'phps' => Phar::PHPS, // paso 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, // analizar como PHP
'inc' => Phar::PHP, // analizar 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',
);
?>
rewrite
La función de reescritura que se pasa toma como único argumento un string y debe devolver un string o false.
Si se utiliza fast-cgi o cgi, el argumento pasado a la función es el valor de la variable $_SERVER['PATH_INFO']. De lo contrario, el argumento pasado a la función es el valor de la variable $_SERVER['REQUEST_URI'].
Si se devuelve un string, será utilizado en la ruta interna del fichero. Si se devuelve false, entonces webPhar() enviará un código HTTP 403.
No devuelve ningún valor.
Levanta una excepción PharException cuando el fichero interno no puede ser
abierto o si la llamada se realiza fuera de un contenedor. Si se pasa un valor de array no válido en
mimeTypes
o si se pasa una función de devolución de llamada inválida al parámetro
rewrite
, entonces se levanta una excepción UnexpectedValueException.
Versión | Descripción |
---|---|
8.0.0 |
fileNotFoundScript y rewrite
ahora son nullable.
|
Ejemplo #1 Ejemplo con Phar::webPhar()
En el ejemplo siguiente, el phar creado mostrará Hola mundo
si alguien llama a /monphar.phar/index.php
o
/monphar.phar
, y mostrará la fuente de
index.phps
si /monphar.phar/index.phps
es llamado.
<?php
// el archivo phar es creado:
try {
$phar = new Phar('monphar.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) {
// se manejan los errores aquí
}
?>