SymLinksIfOwnerMatch performance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Software Developer C++

Vacature details Vakgebied: Software/IT Opleiding: Senior Vacature ID: 13342 Introductie Do you want to work for one of the most innovative companies located in the region of Eindhoven. Currently Due to growth we are looking for a Senior Software Developer. Our client is a high-tech company with international roots and can provide you with a challenging opportunity. Functieomschrijving Responsibilities: Design, develop, and maintain high-quality software applications in C++ Collaborate with other engineers, product managers, and stakeholders to understand requirements and develop solutions Write clean, maintainable, and efficient code Conduct thorough testing and debugging to ensure high-quality software Optimize applications for

Bekijk vacature »

Senior PHP developer

Functie Als Senior PHP developer heb je een sterke mening over de architectuur van projecten en de processen binnen het team. Je bent de sparringpartner voor je Team Lead. Ook ondersteun je met jouw kennis de minder ervaren developers in jouw team. Ze werken regelmatig aan projecten vanaf scratch en dit geeft ruimte om voor nieuwe technieken te kiezen. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

Bekijk vacature »

.NET Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Database Developer

Functieomschrijving Wat ga je doen? Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te voeren, maar het is ook prettig als je in de omgeving van Tilburg woont om naar het kantoor te kunnen komen. Vind jij het leuk om jouw creatieve vaardigheden te benutten om complexe systemen te ontwikkelen? Lees dan snel verder! Bedrijfsprofiel Voor wie

Bekijk vacature »

Experienced Lead Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Delft Vacature ID: 13301 Introductie We are seeking a Lead Java Developer for our team in the area of Delft. You will develop an application used exclusively by the engineers and geologists for site characterizations, which imports raw field and laboratory measurements for further processing, integration, ground modelling, and geotechnical analysis and reporting. The client/server application is entirely written in Java, and the server is hosted in the Amazon cloud, utilizing frameworks such as Spring and Hibernate, and connected to an MS SQL Server RDS instance. There is a trend towards using more

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

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

13/03/2025 06:30:33
 
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.