PDA

Bekijk Volledige Versie : Werkt in php4, maar niet in php5



Eduard Bekker
21/02/08, 18:05
Beste mensen!

<b>Warning</b>: file_exists() [<a
href='function.file-exists'>function.file-exists</a>]: open_basedir
restriction in effect. File(../submenu.txt) is not within the allowed
path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
<b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on line
<b>8</b><br />

Krijg ik bij.

for ( $n=0 ; $n <10; $n++ )
{
if (!file_exists ($boven_pad."submenu.txt"))
{
$boven_pad.="../";
}
else
{
$submenu_gevonden=true;
$n=10;
}
}


Het betreft dus deze regel:

if (!file_exists ($boven_pad."submenu.txt"))

Whats wrong?

En hoe moet het dan anders?


--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/

Rik Wasmus
21/02/08, 18:45
On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
wrote:

> Beste mensen!
>
> <b>Warning</b>: file_exists() [<a
> href='function.file-exists'>function.file-exists</a>]: open_basedir
> restriction in effect. File(../submenu.txt) is not within the allowed
> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on line
> <b>8</b><br />
>
> Krijg ik bij.
>
> for ( $n=0 ; $n <10; $n++ )
> {
> if (!file_exists ($boven_pad."submenu.txt"))
> {
> $boven_pad.="../";
> }
> else
> {
> $submenu_gevonden=true;
> $n=10;
> }
> }
>
>
> Het betreft dus deze regel:
>
> if (!file_exists ($boven_pad."submenu.txt"))
>
> Whats wrong?

1. echo getcwd();, in welke working directory zit je?
2. Welke directoty probeer je te benaderen?
3. Zoals de error zegt, je kunt geen bestand benaderen buiten de
..../httpdocs of /tmp tree, aangezien dit met open_basedir is uitgezet.

--
Rik Wasmus

Eduard Bekker
21/02/08, 19:25
Beste Rik,

Op 21-02-2008 18:38, schreef "Rik Wasmus" in
op.t6vxy1kx5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het volgende:

> On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
> wrote:
>
>> Beste mensen!
>>
>> <b>Warning</b>: file_exists() [<a
>> href='function.file-exists'>function.file-exists</a>]: open_basedir
>> restriction in effect. File(../submenu.txt) is not within the allowed
>> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
>> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on line
>> <b>8</b><br />
>>
>> Krijg ik bij.
>>
>> for ( $n=0 ; $n <10; $n++ )
>> {
>> if (!file_exists ($boven_pad."submenu.txt"))
>> {
>> $boven_pad.="../";
>> }
>> else
>> {
>> $submenu_gevonden=true;
>> $n=10;
>> }
>> }
>>
>>
>> Het betreft dus deze regel:
>>
>> if (!file_exists ($boven_pad."submenu.txt"))
>>
>> Whats wrong?
>
> 1. echo getcwd();, in welke working directory zit je?

Ik wil van de werkmap steeds hoger in bovenliggende mappen zoeken naar een
bepaald bestand.

> 2. Welke directoty probeer je te benaderen?

Een bovenliggende. Bestaat het bestand daar niet, dan naar weer een hogere.

> 3. Zoals de error zegt, je kunt geen bestand benaderen buiten de
> .../httpdocs of /tmp tree, aangezien dit met open_basedir is uitgezet.

Deze laatste regel begrijp ik niet.
open_basedir ken ik niet. Ik kom het alleen tegen bij foutmeldingen.

En waarom werkt dit bij php4 wel gewoon?

--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/

Rik Wasmus
21/02/08, 19:55
On Thu, 21 Feb 2008 19:22:42 +0100, Eduard Bekker <e.bekker@layout.nl>
wrote:
> Op 21-02-2008 18:38, schreef "Rik Wasmus" in
> op.t6vxy1kx5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
> volgende:
>
>> On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
>> wrote:
>>
>>> Beste mensen!
>>>
>>> <b>Warning</b>: file_exists() [<a
>>> href='function.file-exists'>function.file-exists</a>]: open_basedir
>>> restriction in effect. File(../submenu.txt) is not within the allowed
>>> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
>>> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on line
>>> <b>8</b><br />
>>>

>> 1. echo getcwd();, in welke working directory zit je?
>
> Ik wil van de werkmap steeds hoger in bovenliggende mappen zoeken naar
> een
> bepaald bestand.

Dat is niet echt een antwoord waar ik wat mee kan. Wat je wil bereiken is
wel duidelijk, maar de omgeving waarin je werkt kan ik niet zomaar naar
gissen. Waar in de directory tree werkt je script (en dat is niet perse
hetzelfde als waarin deze staat) op het moment dat het fout gaat? echo
getcwd(), dan weten we tenminste meer...

>> 2. Welke directoty probeer je te benaderen?
>
> Een bovenliggende. Bestaat het bestand daar niet, dan naar weer een
> hogere.

Yup, maar welke is dat.

>> 3. Zoals de error zegt, je kunt geen bestand benaderen buiten de
>> .../httpdocs of /tmp tree, aangezien dit met open_basedir is uitgezet..
>
> Deze laatste regel begrijp ik niet.
> open_basedir ken ik niet. Ik kom het alleen tegen bij foutmeldingen.

http://nl2.php.net/manual/en/features.safe-mode.php
Samengevat, je hebt bijvoorbeeld deze bestanden:

/home/vhosts/harmonicahoek.nl/settings.php
/home/vhosts/harmonicahoek.nl/httpdocs/index.php
/home/vhosts/harmonicahoek.nl/httpdocs/bar.php
/home/vhosts/harmonicahoek.nl/httpdocs/foo/include.php
/tmp/sessionfile
/user/foo/bar

Het script in index.php kan alles openen in httpdocs of 'dieper', dus ook
bar.php & ./foo/include.php, en ook alles in /tmp, dus die sessionfile.
Dit script niet bestanden buiten die tree openen, of zelfs maar
controleren of die bestaan, zoals settings.php of /user/foo/bar

> En waarom werkt dit bij php4 wel gewoon?

Omdat de instellingen daarvoor naar alle waarschijnlijkheid anders waren,
of de ene als een module werkt, en de ander als CGI, met een ander working
directory. Vergelijk output van phpinfo() onder de ene en onder de andere.
Het zou zelfs kunnen dat dit probleem in beiden bestond, maar de
display_errors (weergave van fouten) uit stond of error_reporting op een
lagere stand.
--
Rik Wasmus

Eduard Bekker
21/02/08, 21:25
Op 21-02-2008 19:49, schreef "Rik Wasmus" in
op.t6v09c1r5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het volgende:

> On Thu, 21 Feb 2008 19:22:42 +0100, Eduard Bekker <e.bekker@layout.nl>
> wrote:
>> Op 21-02-2008 18:38, schreef "Rik Wasmus" in
>> op.t6vxy1kx5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
>> volgende:
>>
>>> On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
>>> wrote:
>>>
>>>> Beste mensen!
>>>>
>>>> <b>Warning</b>: file_exists() [<a
>>>> href='function.file-exists'>function.file-exists</a>]: open_basedir
>>>> restriction in effect. File(../submenu.txt) is not within the allowed
>>>> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
>>>> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on line
>>>> <b>8</b><br />
>>>>
>
>>> 1. echo getcwd();, in welke working directory zit je?

/home/httpd/vhosts/harmonicahoek.nl/httpdocs (hoger kun je niet komen met de
browser).

Het kan dus zijn dat php5 hier dus de mist in gaat, omdat hij niet hoger kan
komen. Php4 doet hij kennelijk niet zo moeilijk over.


--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/

Rik Wasmus
21/02/08, 22:15
On Thu, 21 Feb 2008 21:22:19 +0100, Eduard Bekker <e.bekker@layout.nl>
wrote:

> Op 21-02-2008 19:49, schreef "Rik Wasmus" in
> op.t6v09c1r5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
> volgende:
>
>> On Thu, 21 Feb 2008 19:22:42 +0100, Eduard Bekker <e.bekker@layout.nl>
>> wrote:
>>> Op 21-02-2008 18:38, schreef "Rik Wasmus" in
>>> op.t6vxy1kx5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
>>> volgende:
>>>
>>>> On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
>>>> wrote:
>>>>
>>>>> Beste mensen!
>>>>>
>>>>> <b>Warning</b>: file_exists() [<a
>>>>> href='function.file-exists'>function.file-exists</a>]: open_basedir
>>>>> restriction in effect. File(../submenu.txt) is not within the allowed
>>>>> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
>>>>> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on
>>>>> line
>>>>> <b>8</b><br />
>>>>>
>>
>>>> 1. echo getcwd();, in welke working directory zit je?
>
> /home/httpd/vhosts/harmonicahoek.nl/httpdocs (hoger kun je niet komen
> met de
> browser).
>
> Het kan dus zijn dat php5 hier dus de mist in gaat, omdat hij niet hoger
> kan
> komen. Php4 doet hij kennelijk niet zo moeilijk over.

Hetgeen geen verschil in versies is, maar simpelweg de open_basedir
instellingen. Pas je php.ini of httpd.conf aan als je het nodig hebt.
--
Rik Wasmus

Eduard Bekker
24/02/08, 17:25
Op 21-02-2008 22:14, schreef "Rik Wasmus" in
op.t6v7y8d95bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het volgende:

> On Thu, 21 Feb 2008 21:22:19 +0100, Eduard Bekker <e.bekker@layout.nl>
> wrote:
>
>> Op 21-02-2008 19:49, schreef "Rik Wasmus" in
>> op.t6v09c1r5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
>> volgende:
>>
>>> On Thu, 21 Feb 2008 19:22:42 +0100, Eduard Bekker <e.bekker@layout.nl>
>>> wrote:
>>>> Op 21-02-2008 18:38, schreef "Rik Wasmus" in
>>>> op.t6vxy1kx5bnjuv@metallium.lan, <luiheidsgoeroe@hotmail.com> het
>>>> volgende:
>>>>
>>>>> On Thu, 21 Feb 2008 17:55:43 +0100, Eduard Bekker <e.bekker@layout.nl>
>>>>> wrote:
>>>>>
>>>>>> Beste mensen!
>>>>>>
>>>>>> <b>Warning</b>: file_exists() [<a
>>>>>> href='function.file-exists'>function.file-exists</a>]: open_basedir
>>>>>> restriction in effect. File(../submenu.txt) is not within the allowed
>>>>>> path(s): (/home/vhosts/harmonicahoek.nl/httpdocs:/tmp) in
>>>>>> <b>/home/vhosts/harmonicahoek.nl/httpdocs/_php/baskant.php</b> on
>>>>>> line
>>>>>> <b>8</b><br />
>>>>>>
>>>
>>>>> 1. echo getcwd();, in welke working directory zit je?
>>
>> /home/httpd/vhosts/harmonicahoek.nl/httpdocs (hoger kun je niet komen
>> met de
>> browser).
>>
>> Het kan dus zijn dat php5 hier dus de mist in gaat, omdat hij niet hoger
>> kan
>> komen. Php4 doet hij kennelijk niet zo moeilijk over.
>
> Hetgeen geen verschil in versies is, maar simpelweg de open_basedir
> instellingen. Pas je php.ini of httpd.conf aan als je het nodig hebt.

Ja. Inmiddels ontdekt: op de oude server keek het script alleen of het
bestand bestond, maar nu komt er ook een foutmelding, als de map waarin
wordt gezocht niet wordt gevonden.

Ik heb dit inmiddels kunnen tackelen.

--
/\/\/\/\/\/\/\/\/\
..|
..| Groetjes, Eduard
..|
\/\/\/\/\/\/\/\/\/