[PHP] include file uit current dir

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Ik probeer een gastenboek werkend te krijgen dat niet door mij geprogrammeerd is. De maker van de website heeft het programma van DataBecker uit duitsland gebruikt. In dit programma zit een optie om een gastenboek toe te voegen aan de website.

als je hier voor kiest maakt het programma een gastenboek.php file aan in rootmap van de site. Dus: www.mijndomein.nl/gastenboek.php

het gastenboek werkt niet, en het gaat fout op een regel die een include doet (in dit geval van een captcha):
code:
1
    include('./assets/w2dcaptcha.php');


Geen error, ook niet als ik error_reporting(E_ALL) doe voor de include.

Zet ik gastenboek.php nu in een subdir, bijv. http://www.mijndomein.nl/gastenboek/gastenboek.php

en ik vervang de include-regel door:
code:
1
    include('../assets/w2dcaptcha.php');


dan werkt alles ineens wel.
Ik snap hier niets van, maar mis vast een of andere server-setting die alles kan oplossen. Ik kan helaas niet alles verplaatsen naar de subdir, want zodra de gebruiker weer DataBecker gaat gebruiken zal het gastenboek weer in http://www.mijndomein.nl/gastenboek.php zetten. En ik ga niet bij iedere wijziging van de gebruiker de php links herstellen :)

heeft iemand enig idee waar dit aan kan liggen?

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Vervang
code:
1
include('./assets/w2dcaptcha.php');
eens door
code:
1
include('assets/w2dcaptcha.php');


Mogelijk gaat er iets fout met de current directory?

Acties:
  • 0 Henk 'm!

  • Wiethoofd
  • Registratie: Juli 2007
  • Laatst online: 14-08 12:22

Wiethoofd

Broadcast TOM

En wat als je vanuit de root begint.
PHP:
1
include('/assets/w2dcaptcha.php');


Heel simpel hoe de boel staat, correct?
/
/gastenboek.php
/assets/w2dcaptcha.php

In het geval van bovenstaande structuur dus zoals Tharulerz zegt.

[ Voor 15% gewijzigd door Wiethoofd op 18-05-2010 00:27 ]

Volg me op Twitter/X & Bluesky


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Wiethoofd schreef op dinsdag 18 mei 2010 @ 00:22:
En wat als je vanuit de root begint.
PHP:
1
include('/assets/w2dcaptcha.php');
gerjan@desktop / $ ls -l
total 76
drwxr-xr-x   2 root   root   4096 apr 22 15:51 bin
drwxr-xr-x   3 root   root   4096 apr 23 14:44 boot
drwxr-xr-x  15 root   root   3320 mei 17 22:34 dev
drwxr-xr-x  68 root   root   4096 mei 17 22:34 etc
drwxr-xr-x   3 root   root   4096 apr 23 05:05 home
lrwxrwxrwx   1 root   root      5 apr 21 19:19 lib -> lib64
drwxr-xr-x   3 root   root   4096 apr 21 21:59 lib32
drwxr-xr-x  11 root   root   4096 mei  3 18:07 lib64
drwx------   2 root   root  16384 apr 21 21:04 lost+found
drwxr-xr-x   2 root   root   4096 apr 22 01:44 media
drwxrwxrwx  29 gerjan wheel  4096 mei 17 14:16 meuk
drwxr-xr-x   8 root   root   4096 apr 29 16:56 mnt
drwxr-xr-x   8 root   root   4096 apr 29 17:14 opt
dr-xr-xr-x 129 root   root      0 mei 18  2010 proc
drwx------  10 root   root   4096 mei 17 14:37 root
drwxr-xr-x   2 root   root   4096 mei 11 17:35 sbin
drwxr-xr-x  12 root   root      0 mei 18  2010 sys
drwxrwxrwt  15 root   root   4096 mei 17 23:12 tmp
drwxr-xr-x  14 root   root   4096 mei  8 18:57 usr
drwxr-xr-x  12 root   root   4096 apr 22 07:06 var


Kweenie wat jij in je root hebt staan, maar een gastenboek? :X

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Tharulerz schreef op dinsdag 18 mei 2010 @ 00:21:
Vervang
code:
1
include('./assets/w2dcaptcha.php');
eens door
code:
1
include('assets/w2dcaptcha.php');


Mogelijk gaat er iets fout met de current directory?
oh, die was ik even vergeten te melden... dat heb ik ook al geprobeerd :(

helpt helaas niet, maar geeft een ander probleem... hij include dan wel de file , maar gaat dan alsnog fout, omdat hij de captcha dan altijd fout rekent.... terwijl , als ik hem in de submap plaats, dus wel alles goed gaat

ik verwacht eigenlijk dat het een soort van server-instelling is...

edit @ hierboven: ik zeg toch rootmap van de site??

[ Voor 33% gewijzigd door P.O. Box op 18-05-2010 00:42 ]


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

PHP:
1
dirname(__file__)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Osiris schreef op dinsdag 18 mei 2010 @ 00:31:
[...]

gerjan@desktop / $ ls -l
total 76
drwxr-xr-x   2 root   root   4096 apr 22 15:51 bin
drwxr-xr-x   3 root   root   4096 apr 23 14:44 boot
drwxr-xr-x  15 root   root   3320 mei 17 22:34 dev
drwxr-xr-x  68 root   root   4096 mei 17 22:34 etc
drwxr-xr-x   3 root   root   4096 apr 23 05:05 home
lrwxrwxrwx   1 root   root      5 apr 21 19:19 lib -> lib64
drwxr-xr-x   3 root   root   4096 apr 21 21:59 lib32
drwxr-xr-x  11 root   root   4096 mei  3 18:07 lib64
drwx------   2 root   root  16384 apr 21 21:04 lost+found
drwxr-xr-x   2 root   root   4096 apr 22 01:44 media
drwxrwxrwx  29 gerjan wheel  4096 mei 17 14:16 meuk
drwxr-xr-x   8 root   root   4096 apr 29 16:56 mnt
drwxr-xr-x   8 root   root   4096 apr 29 17:14 opt
dr-xr-xr-x 129 root   root      0 mei 18  2010 proc
drwx------  10 root   root   4096 mei 17 14:37 root
drwxr-xr-x   2 root   root   4096 mei 11 17:35 sbin
drwxr-xr-x  12 root   root      0 mei 18  2010 sys
drwxrwxrwt  15 root   root   4096 mei 17 23:12 tmp
drwxr-xr-x  14 root   root   4096 mei  8 18:57 usr
drwxr-xr-x  12 root   root   4096 apr 22 07:06 var


Kweenie wat jij in je root hebt staan, maar een gastenboek? :X
Niet alle websites draaien op Linux/UNIX helaas :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:51

.oisyn

Moderator Devschuur®

Demotivational Speaker

Doet dat iets af aan z'n opmerking dan? Het punt dat ie maakt is dat de URL root, dus www.example.com/bla.php, over het algemeen niet overeenkomt met de root van de server, dus als je in PHP include("/bla.php") doet.

[ Voor 69% gewijzigd door .oisyn op 18-05-2010 01:07 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ik had niet gekeken op wat voor server de website draaide... dat blijkt dus een Windows Server met IIS7 te zijn, waar PHP op is geinstalleerd.... een htaccess RewriteRule van /gastenboek.php naar /gastenboek/gastenboek.php gaat dus ook niet lukken...
iemand nog ideeen?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Voeg in het begin van je script gewoon wat disjfa zegt toe aan je include path en klaar ben je.

(En een simple Google naar de steekwoorden uit je topic titel 'path include PHP' had je al direct de oplossing gegeven)

[ Voor 39% gewijzigd door Voutloos op 20-05-2010 08:55 ]

{signature}


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Voutloos schreef op donderdag 20 mei 2010 @ 08:53:
Voeg in het begin van je script gewoon wat disjfa zegt toe aan je include path en klaar ben je.

(En een simple Google naar de steekwoorden uit je topic titel 'path include PHP' had je al direct de oplossing gegeven)
dat kan, maar zoals ik al heb aangegeven, gebruikt de eigenaar van de site een programma (Web2date van DataBecker) dat alle html en php voor hem genereerd en upload naar de server. 1 wijziging van de site zal er dus voor zorgen dat alle code weer wordt overschreven door de oude code... het lijkt me niet de bedoeling dat ik dan iedere keer als er een sitewijziging is, het bestand gastenboek.php weer moet aanpassen...

die oplossing op google brengt me dus niet wat ik wil. Eigenlijk wil ik gewoon weten wat de reden is dat een include van ./assets/bla.php niet lukt. Daar moet toch een goede reden voor zijn? En als ik de reden weet, weet ik waarschijnlijk ook de oplossing wel :)

Acties:
  • 0 Henk 'm!

  • Foamy
  • Registratie: November 2006
  • Laatst online: 11:11

Foamy

Fulltime prutser

P.O. Box schreef op donderdag 20 mei 2010 @ 08:48:
ik had niet gekeken op wat voor server de website draaide... dat blijkt dus een Windows Server met IIS7 te zijn, waar PHP op is geinstalleerd.... een htaccess RewriteRule van /gastenboek.php naar /gastenboek/gastenboek.php gaat dus ook niet lukken...
iemand nog ideeen?
Als er IIS 7 gebruikt word: Installeer IIS Manager :) Daarmee kun je (mits geinstalleerd) de rewrite engine van IIS zelf gebruiken daarvoor. Of zelfs gewoon rewrite rules uit .htaccess files importeren ;)

IIS Manager
URL Rewrite module

[ Voor 15% gewijzigd door Foamy op 20-05-2010 11:34 . Reden: linkjes ]

blub


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, dan nog zal er wel een include path config zijn, of desnoods een config voor auto_prepend_file waarin je je eigen tweaks aan het begin van elke request kan uitvoeren.

Een beetje meer zelf zoeken kan nog steeds geen kwaad.

Of je kauwt zelfs de klant voor aan welke file hij altijd 1 regel moet toevoegen, want jij hoeft ook weer niet verantwoordelijk te zijn voor het automagisch laten werken van andermans code.

[ Voor 29% gewijzigd door Voutloos op 20-05-2010 11:42 ]

{signature}


Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

P.O. Box schreef op donderdag 20 mei 2010 @ 11:26:
[...]


dat kan, maar zoals ik al heb aangegeven, gebruikt de eigenaar van de site een programma (Web2date van DataBecker) dat alle html en php voor hem genereerd en upload naar de server. 1 wijziging van de site zal er dus voor zorgen dat alle code weer wordt overschreven door de oude code... het lijkt me niet de bedoeling dat ik dan iedere keer als er een sitewijziging is, het bestand gastenboek.php weer moet aanpassen...

die oplossing op google brengt me dus niet wat ik wil. Eigenlijk wil ik gewoon weten wat de reden is dat een include van ./assets/bla.php niet lukt. Daar moet toch een goede reden voor zijn? En als ik de reden weet, weet ik waarschijnlijk ook de oplossing wel :)
Het idee is dus dat je in je eigen code (set_include_path), danwel je webserver config het include_path goed zet.

On track


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Foamy schreef op donderdag 20 mei 2010 @ 11:32:
[...]


Als er IIS 7 gebruikt word: Installeer IIS Manager :) Daarmee kun je (mits geinstalleerd) de rewrite engine van IIS zelf gebruiken daarvoor. Of zelfs gewoon rewrite rules uit .htaccess files importeren ;)

IIS Manager
URL Rewrite module
ik mag helaas niets installeren op de server :(
Voutloos schreef op donderdag 20 mei 2010 @ 11:41:
Tja, dan nog zal er wel een include path config zijn, of desnoods een config voor auto_prepend_file waarin je je eigen tweaks aan het begin van elke request kan uitvoeren.

Een beetje meer zelf zoeken kan nog steeds geen kwaad.

Of je kauwt zelfs de klant voor aan welke file hij altijd 1 regel moet toevoegen, want jij hoeft ook weer niet verantwoordelijk te zijn voor het automagisch laten werken van andermans code.
het include path in de config file staat volgens phpinfo op:
code:
1
.;C:\php5\pear


lijkt me niets mis mee... de "." staat er nota bene tussen.

het voorkauwen heb ik ook al aan gedacht idd... denk dat dat ook de uiteindeijk oplossing gaat worden... maar het blijft vreemd dat ./ niet herkend wordt bij een include. Ik had gehoopt dat er een setting was die niet te googlen was (kon nl. niets vinden) en niet bij mij bekend was, maar die iemand anders zo uit z'n mouw zou schudden :) helaas, blijkbaar is de server gewoon vreemd. Heb host er ook al over gecontacteerd, maar ik kan nog beter aan een bloemist iets vragen over een server :)
WouZz schreef op donderdag 20 mei 2010 @ 11:41:
[...]


Het idee is dus dat je in je eigen code (set_include_path), danwel je webserver config het include_path goed zet.
ja, dat begrijp ik ook wel... in eigen code heb ik ook geprobeerd (eerder al), omdat ik toch nog zo naief was om te denken dat dat het probleem was... werkt niet... de include wordt nog steeds niet gedaan... dus het idee is leuk, het is echter niet de oplossing...

anyway... ik denk dat ik maar een gastenboek.php maak met als code:
code:
1
header("location: /gastenboek/gastenboek.php")

en dan maak ik een scriptje dat iedere x uur gastenboek.php weer overschrijft met dit scriptje... dan heeft klant er geen omkijken naar, en ben ik er vanaf...

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Miss kun je de volledige directoory invoeren zoals:
code:
1
/home/site/public_html/pad/naar/je/bestand.ext

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 12-09 13:07
martin149 schreef op donderdag 20 mei 2010 @ 17:14:
Miss kun je de volledige directoory invoeren zoals:
code:
1
/home/site/public_html/pad/naar/je/bestand.ext
Probeer het eens op deze manier:
PHP:
1
include ( dirname ( __FILE__ ) . '/assets/w2dcaptcha.php' );

[ Voor 3% gewijzigd door naam op 20-05-2010 17:38 ]


Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
P.O. Box schreef op dinsdag 18 mei 2010 @ 00:16:
Geen error, ook niet als ik error_reporting(E_ALL) doe voor de include.
Worden de errors misschien naar een logfile gelogged?

Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
is de functie überhaupt geactiveerd, ik had laatst hetzelfde met file_get_contents, ook geen error, maar die functie was uitgeschakeld, maar ht luikt me onwaarschijnlijk.

je kan ook nog ff $_SERVER['DOCUMENT_ROOT'] proberen

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
kluyze schreef op donderdag 20 mei 2010 @ 18:16:
[...]
Worden de errors misschien naar een logfile gelogged?
Of zet display_errors eens aan. :P

{signature}


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
Voutloos schreef op donderdag 20 mei 2010 @ 20:51:
[...]
Of zet display_errors eens aan. :P
zie in dat zelfde bericht de quote, daatin staat dat error reporting aan is, of ben je offtopic bezig :+ ?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
error_reporting en display_errors zijn 2 losse settings, welke verplichte kost zijn voor iedere PHPer. :>

{signature}


Acties:
  • 0 Henk 'm!

  • martin149
  • Registratie: Augustus 2009
  • Laatst online: 10-09 08:19
ja, maar ik neem aan dat je die wel aan hebt staan, anders ben je nogal dom bezig, maar daar had ik even niet over nagedacht... :+ :+ _O-
Pagina: 1