Toon posts:

Code includen via een symlink

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 25-04 20:57

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Topicstarter
Ik begin te twijfelen aan mijn eigen verstand.... ;-)

Gegeven:
- Centrale codebase die in /srv/www/codebase/v200 staat
- Een virtual host die op /srv/www/virtual_host/vh_01 staat.
- In deze map staan 2 submappen (genaamd config en files)
- Een symlink in bovenstaande directory die naar /srv/www/codebase/v200 wijst. (code)


Zodra er bestanden uit code worden aangeroepen is het voor PHP alsof ie 'vastzit' in de directorystructuur op het niveau van code (/srv/www/codebase/v200)....

Aangezien de codebase de configuratiebestanden uit config nodig heeft, zal ik die op de een of andere manier moeten includen...

Hier ga ik dus op het moment op stuk... als ik een include/require doe, dan is het volgende mijn resultaat...
code:
1
Warning: require(config/.config.php) [function.require]: failed to open stream: No such file or directory in /srv/www/codebase/v200/index.php on line 10


Ik heb dit reeds geprobeerd op de lossen middels aliases binnen apache, maar dat geeft identieke resulaten.
FollowSymlinks staat aan in Apache.

Probeer ik nu iets te realiseren dat niet kan, of kijk ik ergens volkomen overheen?

Acties:
  • 0Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 06-06 09:04

MueR

Moderator Devschuur®

is niet lief

Je config bestand heet .config.php ?

Anyway, je kan even proberen om de complete lijst met files in die symlink te printen, zien wat er feitelijk staat (http://nl3.php.net/readdir). Check ook meteen even file permissions en owner.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


Acties:
  • 0Henk 'm!

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 25-04 20:57

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Topicstarter
Yep, config-bestand is .config.php

De require kan het bestand volgens mij niet vinden omdat zodra de index.php wordt aangeroepen het erop lijkt alsof de huidige directory voor PHP veranderd in de directory waar de code fysiek in staat...
en dus niet /srv/www/virtual_host/vh_01/code, zoals ik had verwacht.
Als ik vanuit /srv/www/virtual_host/vh_01/code naar de config zou verwijzen, dan zou dat via /srv/www/virtual_host/vh_01/config/.config.php gewoon goed gaan... (met een require(../config/.config.php)

Deze opzet heb ik gekozen zodat ik straks met mod_rewrite kan realiseren dat /code in de docroot wordt gezien als / en onder water de config en files kunnen worden gebruikt om met 1 codebase meerdere virtual hosts te hebben...

Misschien dat dat iets verduidelijkt...

Overigens heb ik reeds geprobeerd om met de readlink dingen te achterhalen, maar ook zonder resusltaat....

[Voor 14% gewijzigd door ReLexEd op 01-07-2011 10:35. Reden: verdere uitleg toegevoegd.]


Acties:
  • 0Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 22-05 13:20
RedHat of CentOS met SELinux?
Ik heb er geen ervaring mee, maar ik weet dat SELinux de toegang tot de targets van symbolische links kan blokkeren.

Acties:
  • 0Henk 'm!

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 25-04 20:57

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Topicstarter
Nee, SUSE...

De toegang wordt niet geblokeerd, sterker nog, ik kan er vrolijk bij, maar kan niet meer terug referencen naar de parent-map....

Vanuit de gedeelde code worden de config-bestanden (Die logischerwijs per vhost uniek zijn) ge-include, en die config-bestanden kan ik niet meer bij als ik eenmaal de shared-code heb benaderd..

Acties:
  • 0Henk 'm!

Anoniem: 96523

Waarschijnlijk is het een rechten probleem.

Dit heb ik in een notitie staan, omdat ik hier af en toe gebruik van moet maken (weet niet meer hoe en waarom...)
code:
1
2
3
4
5
6
7
8
9
10
maak symlink

ln -s  /orginele/locatie/ /nieuwe/locatie

wijzig eigenaar/groep:

chown -h user_original.group symlink

LET OP:
SAFE_MODE moet UIT staan!!!


Verder moet je natuurlijk symlinks ondersteunen in Apache en absolute paden gebruiken ;)

[Voor 11% gewijzigd door Anoniem: 96523 op 01-07-2011 11:16]


Acties:
  • 0Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Uiteraard zijn relatieve paden in PHP ten opzichte van het script wat de include uitvoert. Dat je vanuit de applicatie een symlink naar je centrale codebase maakt kan vanuit die codebase natuurlijk geen rekening mee worden gehouden. Wat je dus moet doen is aan je centrale codebase laten weten waar je applicatie-code staat. Het netste daarvoor is een define vanuit je applicatie:
PHP:
1
define('CONFIG_PATH', dirname(__FILE__).'/config/config.php');
Het alternatief (niet netjes) is te kijken naar $_SERVER['SCRIPT_FILENAME'] om je applicatie-path te bepalen. Dit vereist geen extra configuratie vanuit je applicatie want je kunt dit in je centrale codebase uitvoeren.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0Henk 'm!

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 25-04 20:57

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Topicstarter
Dat is/was het inderdaad Spider.007!

Ik was net bezig om de niet nette manier uit te proberen, maar de define in de applicatie is inderdaad een nettere oplossing....

Diepe buiging jouw kant op, omdat ik dus toch nog zonder dwangbuis het weekend in kan gaan! :-)
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee