# PHP werkt niet goed...[OPGELOST]

## Azerix

hi,

Ik krijg steeds foutmelding als ik de volgende code gebruik om in het midden paginas te includen.

<?php

{

include($_GET['page']);

}

?>

De paginas worden wel geinclude, maar als index.php word geladen dan krijg in eerste stantie foutmelding in het midden. Als ik op de knoppen click dan worden de paginas wel geinclude.

 *Quote:*   

> 
> 
> Fatal error: main(): Failed opening required '' (include_path='.:/usr/lib/php') in index.php on line 287
> 
> 

 

Ik dacht dat het aan mijn server lag, dus ik heb Apache en php opnieuw geinstalleerd. Maar ik krijg dat foutmelding nog steeds. Ik weet niet of het aan de code ligt of aan mijn webserver.

Heeft iemand einige idee waar zou het aan liggen?Last edited by Azerix on Sun Jun 19, 2005 7:45 pm; edited 1 time in total

----------

## fuge

Mss omdat $_GET['page'] leeg is bij gewoon index.php en als je op een pagina klikt niet. Hoogst waarschijnlijk geen systeem (gentoo) probleem.

----------

## Azerix

hhmm, nou jah ik heb verschillende code gebruikt en toch zelfde fout.

----------

## fuge

Steek eerst je getpage in een variable als hij niet gelijk is aan null en indien wel zet je gewoon index of whatever ge wilt includen op je eerste pagina. En werk dan met die variabele die nooit leeg zal zijn  :Wink: 

----------

## Azerix

Ik heb register_globasl aan gezet. Ik heb dat probleem niet meer? Maar ik weet niet welke gevolgen heeft als je de register_globals aanzet.

----------

## Rainmaker

is $_GET niet vervangen in versie 4 door HTTP_GET_VARS?

btw, lijkt eerder op een probleem met je IncludePath variabele, daar staat alleen /var/lib/php in... Voeg een . toe (huidige directory)

----------

## Azerix

Dat is mij ook opgevallen, ik snap niet waarom wijzt ie naar /var/lib/php  :Confused:   Rainmaker, Ik heb gewoon een directory php aangemaakt,   dat bedoeld je toch met toevoegen van nieuwe directory?

----------

## nixnut

```
include($_GET['page']); 
```

Dat verteld php dat ie een file moet inlezen. Als de variabele $_GET['page'] niet tot een geldige padnaam herleid kan worden, gaat php klagen dat ie die file niet in zijn include_path kan vinden.

----------

## Rainmaker

 *Azerix wrote:*   

> Dat is mij ook opgevallen, ik snap niet waarom wijzt ie naar /var/lib/php   Rainmaker, Ik heb gewoon een directory php aangemaakt,   dat bedoeld je toch met toevoegen van nieuwe directory?

 

Nee, ik bedoelde, controleer of je

iinclude_path = ".:/usr/lib/php"

in je /etc/apache2/conf/php.ini hebt staan (let op die .)

Die punt zorgt namelijk dat naast die /var directory ook de huidige directory wordt doorzocht bij include() aanroepen.

----------

## Azerix

In /usr/lib/ had ik de map php niet, dus dat had ik aangemaakt. En /etc/apache2/conf/php.ini  heb ik ook staan

----------

## Rainmaker

kun je eens de output posten van

```
cat /etc/apache2/conf/php.ini | grep include_path | grep -v \;
```

?

----------

## nielchiano

 *Azerix wrote:*   

> 
> 
> include($_GET['page']);
> 
> 

 

niet direct gerelateerd aan je vraag, maar ik kan het mij niet laten om het toch te melden:

DOE DIT NOOIT

Op die manier laat je de gebruiker toe een willekeurig bestand te bekijken, inclusief bestanden die je liever niet wil:

als ik "http://blabla/index.php?page=/etc/passwd" zou opvragen krijg ik gewoon je users te zien!

DOE ALTIJD een check op user-data.

Ok, dit gepreekt zijnde: het probleem is inderdaad dat bij de eerste aanvraag van de pagina $_GET['page'] = ""

ER komt dus te staan: include("") wat uiteraard een error geeft omdat hij geen bestand vind zonder naam.

----------

## GaDDiM

 *Rainmaker wrote:*   

> is $_GET niet vervangen in versie 4 door HTTP_GET_VARS?
> 
> btw, lijkt eerder op een probleem met je IncludePath variabele, daar staat alleen /var/lib/php in... Voeg een . toe (huidige directory)

 

Nee, niet echt. In PHP 4 is $_GET en co geintroduceerd als super global en omdat het korter is. En in PHP 5 kun je de VARS arrays zelf uitzetten.

De includePath klopt wel want de huidige directory staat er al in (zie error). De $_GET['page'] is gewoon gelijk aan '' en dat bestand bestaat niet. Mss is dit wel een oplossing ook vanwege het bovenstaande veiligheidsprobleem

```

<?php

$allow_pages = array (

   'page1.php',

   'page2.php'

);

if ($_GET['page']) {

   if (in_array ($_GET['page'], $allow_pages)) {

      include ($_GET['page']);

   } else { // SECURITY BREACH

      /* bedenk zelf maar wat, mss kun je jezelf een email sturen met ip of een pagina tonen dat er iets fout is */

   }

} else {

   /* de index pagina */

}

?>

```

De register_globals maken het systeem ook niet echt veiliger, kun je beter uitzetten als je de arrays $_GET, $_POST, $_SERVER, $_SESSION gebruikt

----------

## Azerix

Ik heb een andere oplossing gevonden..... Gewoon andere code gebruikt, werkt prima.

----------

## Azerix

Ik heb nog steeds de zelfde probleem met include_path. Ik heb verschillende php variabelen gebruikt en het werkt niet en ik krijg de zelfde foutlmelding.  Dit is de output van php.ini 

 *Quote:*   

> 
> 
> incluth_path=".:/usr/lib/php"
> 
> 

 

Ik weet nu wel zeker dat het aan de server ligt.

----------

## nixnut

```
incluth_path=".:/usr/lib/php" 
```

probeer include_path eens, in plaats van incluth_path  :Wink: 

----------

## Azerix

 *nixnut wrote:*   

> 
> 
> ```
> incluth_path=".:/usr/lib/php" 
> ```
> ...

 

Nee, dat is een type fout.  :Confused:   Dit is de foutmelding

 *Quote:*   

> 
> 
> (include_path='.:/usr/lib/php')
> 
> 

 

----------

## nixnut

Wat is de volledige foutmelding? Php probeert een bestand in te lezen en zoekt dat in het path dat in include_path is gespecificeerd. Als dat bestand daar niet te vinden is krijg je een foutmelding. De vraag is dan welk bestand dat is en waar dat dan wel staat.

----------

## Azerix

Ik heb paar fouten gevonden in mijn php bestand, maar opzicht ook als het aan mijn php bestand liegt. Dan waarom zoekt ie in directory /usr/lib/php? als of hij probeert te includen via /usr/lib/php  :Confused:   dat is zo en zo verkeerd. Ik zal het vanavond posten de hele php variabel.

----------

## ikke

 *Azerix wrote:*   

> Ik heb paar fouten gevonden in mijn php bestand, maar opzicht ook als het aan mijn php bestand liegt. Dan waarom zoekt ie in directory /usr/lib/php? als of hij probeert te includen via /usr/lib/php   dat is zo en zo verkeerd. Ik zal het vanavond posten de hele php variabel.

 PEAR zit in /usr/lib/php...

----------

## Azerix

Nee , hoef niet meer. Ik weet wat de probleem is, mijn PC functioneert niet goed quoa hardware. Ik heb al vaker problemen mee gehaad. Soms bij het opstarten van PC starten de volgende applicaties niet op

apache,

mysqld,

postifx

Soms als ik een applicatie installeer dan werkt het  eerste keer niet , maar de volgende keer wel. Ik denk dat het moederbord is niet helemaal goed. Dit foutmeldinf krijg ik te ziene als ik inlog in mysql 

 *Quote:*   

> 
> 
> De $cfg['PmaAbsoluteUri'] richtlijn MOET gezet zijn in het configuratie bestand!
> 
> 

 

----------

## ikke

 *Azerix wrote:*   

> Nee , hoef niet meer. Ik weet wat de probleem is, mijn PC functioneert niet goed quoa hardware. Ik heb al vaker problemen mee gehaad. Soms bij het opstarten van PC starten de volgende applicaties niet op
> 
> apache,
> 
> mysqld,
> ...

 Das niet inloggen in mysql, is inloggen in phpmyadmin. En dat zegt gewoon dat u webapp niet goed geconfigureerd is.

----------

## Azerix

Nee dat is wel inloggen in mysql via phpmyadmin. Je hebt wel gelijk dat het kan zijn dat ik niet goed geconfigureert heb. Welke webapplicatie bedoel  je dan precies?

----------

## Rainmaker

hij bedoeld phpmyadmin

Phpadmin waarschuwt je dat je een dingetje bent vergeten te configureren, namelijk die  $cfg['PmaAbsoluteUri'] variabele.

Heeft niks te maken met een fout / slechte config van php of apache, puur die van phpmyadmin.

Kijk eens in de config: /var/www/localhost/htdocs/phpmyadmin/config.inc.php

----------

## ikke

 *Azerix wrote:*   

> Nee dat is wel inloggen in mysql via phpmyadmin.

 In MySQL kan je niet inloggen, je kan enkel een connectie starten met de server. Het inloggen zelf doe je in de applicatie, in dit geval PMA

----------

## Azerix

Je kan in mysql altijd inloggen als je dat geinstalleerd hebt in je gentoo. Gewoon

 *Quote:*   

> 
> 
> root -p mysql
> 
> 

 

 *Rainmaker wrote:*   

> hij bedoeld phpmyadmin
> 
> Phpadmin waarschuwt je dat je een dingetje bent vergeten te configureren, namelijk die  $cfg['PmaAbsoluteUri'] variabele.
> 
> Heeft niks te maken met een fout / slechte config van php of apache, puur die van phpmyadmin.
> ...

 

wat ik moet ik wijzigen config.inc.php ?

 *Quote:*   

> 
> 
> <?php
> 
> /* $Id: config.inc.php,v 2.47 2004/11/03 13:45:25 garvinhicking Exp $ */
> ...

 

----------

## ikke

Lees en gij zult weten

```
/**

* Your phpMyAdmin url

*

* Complete the variable below with the full url ie

* http://www.your_web.net/path_to_your_phpMyAdmin_directory/

*

* It must contain characters that are valid for a URL, and the path is

* case sensitive on some Web servers, for example Unix-based servers.

*

* In most cases you can leave this variable empty, as the correct value

* will be detected automatically. However, we recommend that you do

* test to see that the auto-detection code works in your system. A good

* test is to browse a table, then edit a row and save it. There will be

* an error message if phpMyAdmin cannot auto-detect the correct value.

*

* If the auto-detection code does work properly, you can set to TRUE the

* $cfg['PmaAbsoluteUri_DisableWarning'] variable below.

*/

$cfg['PmaAbsoluteUri'] = '';

```

en root -p mysql zal niet veel geven  :Wink: 

----------

## Azerix

foutje van me

 *Quote:*   

> 
> 
> mysql -u root -p
> 
> 

 

Maar die link wijzigen is geen oplossing:?

----------

## ikke

Uh? Die error zegt gewoon dat PmaAbsoluteUri niet ingesteld is. Je hebt 2 mogelijkheden:

1. die var instellen, dus 

```
$cfg['PmaAbsoluteUri'] = '';
```

 veranderen in 

```
$cfg['PmaAbsoluteUri'] = 'http://www.uwserver.com/path/naar/phpmyadin';
```

OF

2. 

```
/**

* Disable the default warning about $cfg['PmaAbsoluteUri'] not being set

* You should use this if and ONLY if the PmaAbsoluteUri auto-detection

* works perfectly.

*/

$cfg['PmaAbsoluteUri_DisableWarning'] = FALSE; 
```

 die FALSE veranderen in TRUE

----------

