[php] files van buiten docroot doorgeven

Pagina: 1
Acties:
  • 118 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • decramy
  • Registratie: December 2001
  • Laatst online: 07:36

decramy

root@birdie:~#

Topicstarter
framework layout:
code:
1
2
3
/lib/web/javascript/
/sites/EenSite/web/
/sites/TweedeSite/web/


Die javascript code moet beschikbaar worden in alle sites. Denk hierbij aan tiny_mce ofzo.

Nu heb ik een modRewriteRule gemaakt die /lib/javascript naar een phpscriptje forward die dan weer die files uit het framework trekt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(strstr("./",$_GET['file'])){
  header("HTTP/1.0 400 Bad Request");
  die();
}

$dir = "./../../../lib/javascript/";
$file = $dir . $_GET['file'];
if(file_exists($file)){
  header("Content-Type: text/html");
  header("Content-Length: ".filesize($file));
  $handler = fopen($file,"r");
  fpassthru($handler);
  fclose($handler);
}else{
  header("HTTP/1.0 404 Not Found");
}

Echter... dit is traag. Zeker bij meerdere files, zoals bij tiny_mce met wat extra plugins.
Nu heb ik gekeken naar apache-entry Alias, maar omdat ik gebruik maak van virtualdocumentroot is niet altijd bekend waar het begin van het framework is. Afhandeling in PHP is dus gewenst.

Weten jullie een manier om dit sneller te verwerken? Hoe kom je snel bij de bestanden in de /lib dir?

20*375Wp met Enphase IQ7+ micro's | Stiebel Eltron HGE Water/Water WP 9kW | Tesla M3, powered by SmartEVSE | Servertje @ www.coloclue.net


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:01
Symbolic links gebruiken? Dat is sneller dan PHP of Apache.

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Volgens mij heb je de volgende opties:
  1. Symbolic links gebruiken
  2. Apache config instellen
  3. PHP gebruiken
Waneer je PHP gebruikt, zorg dan dat je optimaal gebruik maakt van cache instellingen. Stuur de juiste headers en let op een 304 Not Modified header. Scheelt je weer wat laad tijd.

On track


Acties:
  • 0 Henk 'm!

  • ascent
  • Registratie: Mei 2005
  • Laatst online: 20-09 12:41
Het probleem bij symbolic link is dat er een aantal ontwikkelaars hier (ja, decramy is op vakantie, ik neem even waar ;-)) die op windows met TortoiseSVN zitten te werken. En als die een symlink ophaalt en weer commit, maakt 'ie er iets heel anders van omdat de windows filestructuur geen symlinks snapt, en dus de symlink aan gort rost.

en om nou in de post-commit hooks te gaan zetten dat 'ie alle symlinks moet herstellen is ook weer zo ugly

Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt die symlinks toch op de ignore list zetten?

Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Mischien anders een idee om de javascripts toch in je projecten te zetten met behulp van 'svn:external' ?

Skill is when luck becomes a habit.


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19:49

thomaske

» » » » » »

Je kan in de apache-config inderdaad een alias aanmaken. Gebruik ik al jaren naar tevredenheid

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • ascent
  • Registratie: Mei 2005
  • Laatst online: 20-09 12:41
thomaske schreef op vrijdag 03 augustus 2007 @ 13:40:
Je kan in de apache-config inderdaad een alias aanmaken. Gebruik ik al jaren naar tevredenheid
gokje, je gebruikt geen virtualdocumentroot?

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

* RaZ gaat mee met WouZz.

Je kan heel gemakkelijk naar de modification date kijken, en die header info checken. Bestand niet gewijzigd? 304 not modified sturen..

PHP zijn serverside scripts, en worden dus niet gecached, tot je het zelf doet. Ik gebruik het op een soort gelijke manier ook voor een website van me. Blijft de snelheid er goed in, zelfs op m'n ADSL lijntje.

Kijk maar eens voor de gein in de source van php.net, daar kan je het zo uit vissen.

Ey!! Macarena \o/

Pagina: 1