SymLinksIfOwnerMatch performance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Senior PHP developer met ambities tot Software Arc

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

PHP ontwikkelaar

Functie Jij komt te werken in een development team van 9 man. Het grootste deel doet back end development en daarnaast is er 1 teamlead en 1 tester in het team. Dit Agile team is van groots belang voor de organisatie omdat zij voornamelijk alle eigen systemen in-house ontwikkelen. Naast het door ontwikkelen van het bestaande platform en de software die daarbij komt kijken, zul jij je ook bezighouden met het realiseren en opzetten van nieuwe projecten binnen het bedrijf. Je staat nauw met de klant in contact om zo hun wensen zo goed mogelijk te kunnen realiseren. Daarnaast ontwikkel

Bekijk vacature »

Pagina: 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

30/05/2016 02:26:42
Quote Anchor link
Ola,

Ik kwam toevallig het onderstaande tegen.

http://httpd.apache.org/docs/2.4/misc/perf-tuning.html#symlinks

Ondanks dat ik FollowSymLinks (via Plesk) heb uitgeschakeld, werkt rewriting nog steeds. Ik ga er dus vanuit dat SymLinksIfOwnerMatch op een hoger niveau wél is ingeschakeld. Als ik nu de bovenstaande link lees, dan staat daar dat er telkens wordt gecontroleerd op eigenaar.

Wat ik nu niet begrijp uit de documentatie ... stel, ik zet in mijn index.php het volgende:

require '/var/www/framework/index.php';

Gaat ie dan voor iedere map de eigenaar checken, ook als het géén symlink betreft? Of gebeurt dit alleen als het wél een symlink betreft? Bijv. als ik dit zou doen:

require '/framework/index.php';

... waarbij /framework dan een symbolische link is naar /var/www/framework/ ?
Gewijzigd op 30/05/2016 02:27:51 door Ozzie PHP
 
PHP hulp

PHP hulp

23/11/2024 10:20:10
 
Bart V B

Bart V B

30/05/2016 07:33:12
Quote Anchor link
Volgens mij gaat hij dan iedere map na of hij de juiste rechten heeft.
En dat is dan maar goed ook, want je wil niet hebben dat men "zomaar" van alles kunnen schrijven op je server. Stel je voor dat men kan schrijven in /etc/passwd . hmmm... Dan zou ik toch de rillingen krijgen.

Als je issue zou zijn performance, dan denk ik dat die maar 1000-ste milliseconden wel mee zal vallen ;)

Trouwens, het staat daar ook heel goed beschreven:
Quote:
and a request is made for the URI /index.html, then Apache will perform lstat(2) on /www, /www/htdocs, and /www/htdocs/index.html. The results of these lstats are never cached, so they will occur on every single request.

De vraag is alleen hoe heb jij je configuratie?
Gewijzigd op 30/05/2016 07:58:53 door Bart V B
 
Ben van Velzen

Ben van Velzen

30/05/2016 10:58:51
Quote Anchor link
Bart heeft gelijk, echter is de inhoud van je scripts niet onderhevig aan deze controles, dit geldt alleen voor binnenkomende requests en eventuele rewrites die hieruit volgen. PHP, Perl, Python, pick your poison staan hier los van en doen hun eigen controles.
 
Ozzie PHP

Ozzie PHP

30/05/2016 15:19:49
Quote Anchor link
>> Volgens mij gaat hij dan iedere map na of hij de juiste rechten heeft.

Volgens mij gaat het niet zozeer om de rechten, maar om de juiste eigenaar (maar wellicht bedoel je dat ook).

Maar doet ie dat dan alleen bij een symbolische link ... of ook bij een 'normale' link? Dus stel, ieder request komt binnen op (een centraal) index.php en vanuit daar wil ik het framework aanroepen.

Nu kan ik dat doen via de 'echte' link:

require '/var/www/framework/index.php';

... of ik kan een symoblische link aanmaken naar de 'framework' map. In index.php krijg je dan:

require '/framework/index.php'; // de map framework is hier dus een symbolische link

In het eerste geval is er geen sprake van een symbolische link. Gaat ie dan toch dan van iedere map ('var' 'www' en 'framework' ) controleren of die dezelfde eigenaar heeft als het centrale index.php bestand? Of doet ie dat alleen in het tweede geval waar ook daadwerkelijk sprake is van een symbolische link?

Anders gezegd: komt SymLinksIfOwnerMatch altijd in actie, of alleen als het ook echt een symbolische link betreft?

>> Bart heeft gelijk, echter is de inhoud van je scripts niet onderhevig aan deze controles ...

Bedoel je daarmee dat als ik vanuit de centrale index.php het framework aanroep de controles plaatsvinden tot aan het index.php bestand in het framework, maar daarna niet meer?

>> Als je issue zou zijn performance, dan denk ik dat die maar 1000-ste milliseconden wel mee zal vallen ;)

Dat zou inderdaad kunnen wat je zegt ... maar omdat het specifiek wordt vermeld als performance issue op de website van Apache ben ik toch wel benieuwd. Stel dat ik in mijn centrale index.php het framework aanroep via een symbolische link (minder typwerk) maar het gevolg is dat vervolgens alle aanroepen worden gecheckt op eigenaar ... dan kan (wellicht) de performance daar ineens wel merkbaar onder gaan lijden. Maar dat hangt dus af van hoe SymLinksIfOwnerMatch nu eigenlijk precies werkt. Vandaar ook mijn vraag.
Gewijzigd op 30/05/2016 15:25:25 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

30/05/2016 15:30:08
Quote Anchor link
>>Bedoel je daarmee dat als ik vanuit de centrale index.php het framework aanroep de controles plaatsvinden tot aan het index.php bestand in het framework, maar daarna niet meer?

Ik bedoel hiermee dat de controles plaatsvinden tot het moment dat een request slaagt, ofwel de uitvoer van het script begint. Wat er in je script gebeurt staat niet onder controle van de webserver, en als zodanig worden beveiligingen vanuit Apache niet afgedwongen. Het zijn twee verschillende lagen. Ongeacht het FollowSymlinks gedrag binnen Apache zal PHP symlinks gewoon volgen.

De werking van SymlinkIfOwnerMatch is heel eenvoudig: wanneer je een request doet wordt gecontroleerd of het pad symlinks bevat. Dit gebeurt zoals eerder gezegd via lstat() op de verschillende elementen van het pad. Wanneer een symlink "gezien" wordt, wordt de eigenaar van de link vergeleken met de eigenaar van het pad waar deze link naar wijst. Wanneer deze ongelijk zijn wordt het request geweigerd. FollowSymlinks bevat dezelfde controle, minus de gebruikerscontrole: wanneer een symlink wordt aangetroffen wordt deze niet gevolgd en er volgt direct een Forbidden melding.
Gewijzigd op 30/05/2016 15:36:08 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 15:45:25
Quote Anchor link
Thanks Ben. Ik ben nog niet zo vergevorderd in deze materie als jij ... dus vergeef me mijn vragen ;-)

>> Ik bedoel hiermee dat de controles plaatsvinden tot het moment dat een request slaagt ...

Wat bedoel je met "dat een request slaagt"? Als ik require '/framework/index.php'; doe, is het request dan geslaagd als index.php wordt geladen? En wat zou er gebeuren als ik vanuit die index.php weer een nieuwe symlink zou aanroepen?

>> De werking van SymlinkIfOwnerMatch is heel eenvoudig: wanneer je een request doet wordt gecontroleerd of het pad symlinks bevat.

Ah oké .. ik denk dat ik het nu begrijp. Dus zelfs als het geen symlink is, dan worden toch de controles uitgevoerd óf het een symlink is. Correct? En zo ja, dan volgt de controle van de eigenaar.

En bij FollowSymlinks wordt niet gecontroleerd of het een symlink is, maar wordt de link gewoon altijd gevolgd. Op die manier?
 
Ben van Velzen

Ben van Velzen

30/05/2016 15:48:44
Quote Anchor link
>> Wat bedoel je met "dat een request slaagt"? Als ik require '/framework/index.php'; doe, is het request dan geslaagd als index.php wordt geladen? En wat zou er gebeuren als ik vanuit die index.php weer een nieuwe symlink zou aanroepen?

Een request is geslaagd zodra de controle wordt overgedragen naar PHP, of er een bestand wordt teruggegeven. Binnen PHP bestaan deze controles niet, en zal de request via een symlink altijd slagen, zolang de user waar PHP onder draait toegang heeft. Welke user dat is is afhankelijk van de configuratie van de brug tussen Apache en PHP. Dit kan via CGI, FastCGI, libphp, etc. Per geval is het verschillend wat configureerbaar is. Zo is er SuEXEC, mod_ruid en suphp om een paar te noemen.

>> Ah oké .. ik denk dat ik het nu begrijp. Dus zelfs als het geen symlink is, dan worden toch de controles uitgevoerd óf het een symlink is. Correct? En zo ja, dan volgt de controle van de eigenaar.

Correct.

>> En bij FollowSymlinks wordt niet gecontroleerd of het een symlink is, maar wordt de link gewoon altijd gevolgd. Op die manier?

Afhankelijk van de instelling wordt hij altijd gevolgd of altijd geweigerd.
Gewijzigd op 30/05/2016 15:57:44 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 16:07:52
Quote Anchor link
Het begint steeds duidelijker te worden. Het laatste stuk snap ik, alleen het eerste niet ... met name dit "Een request is geslaagd zodra de controle wordt overgedragen naar PHP".

Ik heb nu PHP 7 FastCGI draaien. In de (overkoepelende) virtual host settings geef ik aan (via rewriting) dat iedere request naar index.php moet worden doorgestuurd. Een bezoeker bezoekt nu www.mijnsite.nl/blabla

Die request wordt dus doorgestuurd naar de index.php in de document root. In die index.php zet ik:

require '/framework/index.php';

De map 'framework' in de bovenstaande link is een symbolische link naar '/var/www/framework'.

Als ik jou nu goed begrijp dan wordt er (als SymlinkIfOwnerMatch is ingeschakeld) gekeken of 'framework' een symlink is. Dat is zo. Vervolgens wordt dan gekeken of de eigenaar van de map 'framework' hetzelfde is als de eigenaar van index.php in de document root. Dit is zo ... is de request nu dan geslaagd en houdt vanaf dit punt het controleren van de eigenaar op, ook al zou ik vanuit het framework weer een andere symlink aanroepen?
Gewijzigd op 30/05/2016 16:08:43 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

30/05/2016 16:15:25
Quote Anchor link
Nee, daar wordt niet naar gekeken, want dit gebeurt in je script. Apache heeft niets te maken met de inhoud van je script, alleen wat er gebeurt om in dit geval index.php voor de eerste keer op te vragen. De require heeft deze controles dus niet. Apache en PHP zijn 2 verschillende dingen, en hebben hun eigen -verschillende- controles.

Dus:
Gebruiker bezoekt www.mijnsite.nl/blabla
Apache bepaalt dat de request gaat naar index.php
Afhankelijk van je configuratie controleert Apache of er symlinks in het pad naar index.php staan en handelt overeenkomstig
Je script wordt aangeroepen (de controle wordt overgedragen aan PHP), verdere controles zullen door Apache niet gedaan worden.
Gewijzigd op 30/05/2016 16:18:31 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

30/05/2016 16:38:56
Quote Anchor link
Aha ... dus zodra index.php in de document root is aangeroepen, is daarna dit hele verhaal dus eigenlijk niet meer van toepassing. Dan vinden die controles dus niet meer plaats. Het gaat dus uitsluitend om die allereerste rewrite naar index.php in de doc root als ik je goed begrijp?

En wie is dan eigenlijk de "eigenaar" van die allereerste request? (aan de hand waarvan de controle wordt uitgevoerd)

Maar dat houdt dan dus ook in dat het qua performance eigenlijk niks uitmaakt of je followsymlinks of SymlinkIfOwnerMatch gebruikt, aangezien het enkel om het aanroepen van index.php gaat?
 
Ben van Velzen

Ben van Velzen

30/05/2016 16:48:59
Quote Anchor link
De eigenaar is de eigenaar van de virtualhost, vaak een user als www-data of nobody, maar de eigenaar bij SymlinkIfOwnerMatch heeft een andere definitie:
De eigenaar is in dit geval de eigenaar van de link (dus de user/group die aan de link gehangen zijn met chown/chgrp). De eigenaar wordt opgevraagd door Apache, en het doel van de link wordt hiermee vergeleken. Als jij als root een link /framework maakt naar /var/www/framework en die map is eigendom van de user ozzie, en je verandert de eigenaar van de link niet naar ozzie zal Apache het volgen van de link niet toestaan.
 
Ozzie PHP

Ozzie PHP

30/05/2016 17:37:51
Quote Anchor link
Oké, dus als ik je goed begrijp ... als ik /var/www/framework en de symlink beiden als root aanmaak is er niks aan de hand, maar als ik een van beiden als user ozzie aanmaak, dan werkt het niet als SymlinkIfOwnerMatch is ingeschakeld?

Maar dit speelt dus alleen bij de aanroep TOTDAT index.php in de doc root is geladen? En daarna maakt het niet meer uit? Dus als index.php is geladen en ik roep van daaruit de symlink 'framework/index.php/' aan, dan maakt het niet uit als de symlink door root is gemaakt en de map door ozzie?

Toevoeging op 30/05/2016 17:40:15:

Oh ja, als het enkel om het stukje tot aan index.php gaat dan neem ik aan dat het qua performance niet echt uitmaakt of je SymlinkIfOwnerMatch of FollowSymlinks gebruikt? Aangezien Apache op haar website voor performanceverlies waarschuwt??
 
Ben van Velzen

Ben van Velzen

30/05/2016 18:15:55
Quote Anchor link
Op beide vlakken is het antwoord: correct. lstat() is een relatief langzamen systemcall, maar omdat het resultaat uit lstat alle informatie die betrekking heeft op FollowSymlinks en SymlinksIfOwnerMatch is de performance gelijk. Alleen de uitwerking is anders. Wanneer je FollowSymlinks uit hebt staan vindt de controle plaats, wanneer deze aan staat niet. Wanneer SymlinksIfOwnerMatch aan staat vindt controle plaats, en wanneer deze uit staat wordt nog steeds gecontroleerd of je symlinks in het pad hebt staan. Voor de performance is er dus weinig tot geen verschil.

PHP heeft geen notie van de Apache configuratie, en doet als zodanig niets met symlinks. Ze worden gewoon gevolgd. Zolang de user toegang heeft tot de bestanden die je opvraagt met require, include of aanverwanten worden deze gewoon geopend.
 
Ozzie PHP

Ozzie PHP

30/05/2016 18:19:58
Quote Anchor link
Oké cool, thanks.

>> Zolang de user toegang heeft tot de bestanden die je opvraagt met require, include of aanverwanten worden deze gewoon geopend.

En dat is dan denk ik weer te regelen met open_basedir correct?
 
Ben van Velzen

Ben van Velzen

30/05/2016 18:23:27
Quote Anchor link
Ook dat, en natuurlijk met gewoon basis bestandsrechten.
 
Ozzie PHP

Ozzie PHP

30/05/2016 18:23:56
Quote Anchor link
Oké cool ... thanks voor je hulp en inzichten!!
 
Willem vp

Willem vp

31/05/2016 23:45:12
Quote Anchor link
Ozzie PHP op 30/05/2016 17:37:51:
Oh ja, als het enkel om het stukje tot aan index.php gaat dan neem ik aan dat het qua performance niet echt uitmaakt of je SymlinkIfOwnerMatch of FollowSymlinks gebruikt? Aangezien Apache op haar website voor performanceverlies waarschuwt??

Om die performance hoef je je denk ik niet zo druk te maken. De webserver op mijn werk heeft vandaag (vrij rustige dag ;-) ) een kleine 2 miljoen requests afgehandeld en praktisch elke request loopt door een of meerdere symlinks. Daar komt nog eens bij dat het een virtuele machine is die een groot deel van de requests via een reverse proxy laat afhandelen door webservers op andere virtuele machines (die ook aan elkaar hangen van symlinks). De content wordt vervolgens dynamisch gegenereerd door een script dat data uit een database ophaalt, in XML-formaat zet en door een XSLT-parser haalt die er HTML van maakt. En dat alles zonder noemenswaardige vertraging.

Ik heb geen idee vanaf welke getallen het performanceverlies merkbaar zou moeten zijn. Ik ben het in ieder geval nog niet tegengekomen. De voornaamste reden dat op piekmomenten onze performance inzakt is doordat onze gigabit-uplink het niet meer trekt.
 
Ozzie PHP

Ozzie PHP

01/06/2016 00:01:32
Quote Anchor link
Thanks voor je toelichting Willem. Fijn om te horen. Wel vreemd dan dat de website van Apachte er voor "waarschuwt". Beetje storm in een glas water dan ...
 
Willem vp

Willem vp

01/06/2016 00:11:18
Quote Anchor link
Ozzie PHP op 01/06/2016 00:01:32:
Thanks voor je toelichting Willem. Fijn om te horen. Wel vreemd dan dat de website van Apachte er voor "waarschuwt". Beetje storm in een glas water dan ...

Ik sluit niet uit dat die alinea een jaar of 20 geleden is geschreven, toen een dergelijke instelling nog wel merkbaar kon zijn voor je performance. :-)
 
Ozzie PHP

Ozzie PHP

01/06/2016 00:30:47
Quote Anchor link
Tja, het zou kunnen, maar het staat toch vermeld bij versie 2.4 ... wel slordig dan.
 
Thomas van den Heuvel

Thomas van den Heuvel

01/06/2016 12:35:28
Quote Anchor link
Ik zie zo direct niet echt een waarschuwing staan in het stukje waar je naar linkt, daar wordt enkel uitgelegd wat er gebeurt bij welke instelling. Ook staat daar niet dat een bepaalde instelling catastrofaal is voor performance maar simpelweg dat er meer controles plaatsvinden. Indien dit echt een deuk in je performance zou slaan zou hier wel een melding over gemaakt worden. En als performance echt een issue is (high traffic site) dan heb je hier al andere voorzieningen voor getroffen (load balancing etc.).

Je moet je ook blijven afvragen waar je (veel) winst kan pakken he. Mogelijk is het beste wat je kunt halen met het spelen met deze instellingen een micro optimalisatie. Die mogelijk weer teniet wordt gedaan door brakke code of trage queries.

Zo begrijp ik bijvoorbeeld niet (als dit echt een concrete situatie is en niet enkel bedoeld was ter illustratie) dat je vanuit index.php #1 index.php #2 required. Waarom zet je niet meteen index.php #2 in de document root en laad je de rest dynamisch in met behulp van een autoloader (en dus niet met require of include)? Indien dit een concreet geval was dan zit naar alle waarschijnlijkheid de echte bottleneck nog altijd in de applicatie zelf. Weinig optimalisatie hieromheen zal dat verhelpen :).
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.